我必须从父对话框中捕获一个事件,该对话框使用静态类中的方法来更新数组。
在这个对话框中,我调用一个子对话框,在列表中显示数组。
如果当前对话框是子对话框或父对话框,我知道变量,但是从静态类中的方法我怎样才能在捕获事件时调用子对话框中的方法来更新列表?
答案 0 :(得分:1)
您可以将对话框的实例传递给静态方法,如下所示。如果你在对话框的方法中使用静态方法调用,我肯定会重新访问你的架构。
public static class MyStaticClass
{
public static void SomeMethod(Form myDialog)
{
myDialog.SomeMethodOnTheDialog();
}
}
答案 1 :(得分:0)
您必须修改静态方法以将Dialog的实例作为参数:
public static void UpdateArray(Dialog instance)
{
// Initialize what you need
instance.DoSomething();
}
然后你会在你的事件处理程序中将其全部用于:
public void Dialog_EventHandler(object sender, EventArgs e)
{
Dialog dialog = (Dialog) sender;
UpdateArray(dialog);
}
答案 2 :(得分:0)
在子对话框的类中,您必须创建公共方法,以执行您需要它们执行的操作。
然后,您只需从静态类中调用公共方法。
这是一个迷你示例,我从静态类中调用了一个公共方法(在我的Main窗体中)。我认为这与你正在做的类似。
主表单摘录
public static void WriteToTextBox(string message)
{
TextBox myLog = (TextBox)CITX12Parser.Main.ActiveForm.Controls.Find("txtLog", true).First();
myLog.Text = message;
}
静态类摘要
public class LoggingUtils
{
public static void TestLog(string msg)
{
Main.WriteToTextBox(msg + Environment.NewLine);
}
}