Ich erstellen Windows-Formularanwendung und das Hauptformular enthält ein Panel. Verschiedene Benutzersteuerelemente werden in diesem Bereich beim Klicken auf die Schaltfläche geladen.So rufen Sie eine Klassenmethode aus einer anderen Klasse
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;
}
}
}
}
wenn klicken Config-Taste es Dashboardbenutzer Controller in Feld lädt gibt es eine andere Anwendung Schaltfläche in Dashboard-Usercontrol. Wenn ich auf diese Schaltfläche klicke, muss ich updatNotification Methode in MainForm Klasse anrufen.
namespace LearnCSharp.Controllers
{
public partial class Dashboard : UserControl
{
private void btnApply_Click(object sender, EventArgs e)
{
// Need to call updateNotification method here.
}
}
}
Wie kann ich meine Anforderung erreichen. Ich schätze jede Hilfe. Vielen Dank.
Zuerst müssen Sie die Methode public markieren, dann eine Instanz von MainForm erstellen und schließlich MainForm.updateNotification() – apomene
@apomene +1 aufrufen, aber könnten Sie 'MainForm.updateNotification' in etwas wie' instance.updateNotification' ändern? Weil es im Moment fast wie ein statischer Anruf aussieht. –
Die Antwort von @ apomene, obwohl technisch verfügbar, sollte nur unter extremen Bedingungen verwendet werden. Verwenden Sie stattdessen die unten stehende Ereignisantwort, da Ihr Steuerelement wahrscheinlich nicht wissen wird, zu welcher Instanz es gehört. – netniV