Windows 양식 응용 프로그램을 만들고 해당 기본 폼에 패널이 포함되어 있습니다. 다른 사용자 컨트롤이 버튼 클릭시 해당 패널에로드됩니다. 클릭 설정 버튼 그것이 패널에 대시 보드 사용자가 컨트롤러를로드 할 때다른 클래스에서 클래스 메서드를 호출하는 방법
namespace LearnCSharp
{
public partial class MainForm : Form
{
private void configButton_Click(object sender, EventArgs e)
{
var uControllerDashboard = new Controllers.Dashboard();
panel.Controls.Add(uControllerDashboard);
updateNotification("active");
}
private void updateNotification(string state)
{
switch (state)
{
case "active" :
//Do something here
break;
}
}
}
}
는 다른 대시 보드 UserControl을에서 버튼을 적용있다. 해당 버튼을 클릭하면 updatNotification 메서드가 MainForm 클래스에 있습니다.
namespace LearnCSharp.Controllers
{
public partial class Dashboard : UserControl
{
private void btnApply_Click(object sender, EventArgs e)
{
// Need to call updateNotification method here.
}
}
}
어떻게해야합니까? 어떤 도움을 주셔서 감사합니다. 감사.
먼저 메소드를 public으로 표시하고 MainForm의 인스턴스를 생성 한 다음 MainForm.updateNotification()을 – apomene
@apomene +1으로 호출해야합니다. 'MainForm.updateNotification'을'instance.updateNotification'과 같이 변경 할 수 있습니까? 왜냐하면 지금은 정적 호출과 매우 흡사하기 때문입니다. –
@ apomene의 답변은 기술적으로 가능하지만 극한 상황을 제외하고는 사용해서는 안됩니다. 대신 컨트롤이 관련 인스턴스를 알지 못하기 때문에 아래 이벤트 응답을 사용하십시오. – netniV