我必须捕获来自父对话框的事件,该对话框使用来自静态类的方法来更新数组。
在此对话框中,我调用子对话框,该对话框在列表中显示数组。
使用变量我知道当前对话框是子对话框还是父对话框,但是从静态类中的方法,当我捕获事件时,如何调用子对话框内的方法来更新列表?
发布于 2010-09-17 21:01:53
您可以将对话框的实例传递到静态方法中,如下所示。但是,如果您在对话框的方法中使用静态方法调用,我肯定会重新访问您的体系结构。
public static class MyStaticClass
{
public static void SomeMethod(Form myDialog)
{
myDialog.SomeMethodOnTheDialog();
}
}
发布于 2010-09-17 21:02:28
您必须修改您的静态方法以接受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);
}
发布于 2013-08-01 01:13:37
在子对话框的类中,您必须创建执行所需操作的公共方法。
然后,您只需从静态类调用这些公共方法。
这是一个小型示例,其中我从一个静态类调用了一个公共方法(在我的主窗体中)。我认为这与您正在做的事情很相似。
主窗体代码段
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);
}
}
https://stackoverflow.com/questions/3735455
复制相似问题