将参数从一种形式传递给另一种形式

时间:2013-03-29 00:26:10

标签: c# winforms

我有一个主表单和一个子表单。子表单由主表单中的4个不同表单事件激活,并根据触发它的事件进行重新设计。但是,有没有办法将参数直接传递给子表单,而不是使用全局布尔值来确定触发了哪个事件?

谢谢!

1 个答案:

答案 0 :(得分:3)

您可以将公共成员添加到子表单。方法或财产。例如

public void ProcessEvent(int eventNumber)
{
    switch (eventNumber) {
        case 1:
            // Process event #1
            break;
        case 2:
            // Process event #2
            break;
        case 3:
            // Process event #3
            break;
        case 4:
            // Process event #4
            break;
    }
}

在主表单中,您可以这样称呼它:

mySubform.ProcessEvent(1);

(注意:在WinForms中,您不会使用子表单而是使用UserControl。)


或者使用子表单中的属性:

public int EventNumber { get; set; }

在主窗体中,您可以这样设置:

mySubform.EventNumber = 1;

在子表单中,您可以像这样访问它

if (EventNumber == 1) { ... }

注意:表单,子表单和控件只是类,您可以使用" normal"类。


<强>更新

根据您的一条评论,您没有使用子表单而是使用对话框表单。 我会将一个表单(UserControl或MDI表单)放在另一个表单上(而不是上面)作为子表单。你会这样称呼它:

var fldg = new MyDialogForm{ EventNumber = 1 };  // Using the property described above.
fdlg.ShowDialog(this);

另一种选择是将参数传递给子表单的构造函数

private int _eventNumber;

public MyDialogForm(int eventNumber) // Constructor
{
    _eventNumber = eventNumber;
}

你会这样称呼它:

var fldg = new MyDialogForm(1);  // Pass the argument to the constructor.
fdlg.ShowDialog(this);