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

本文关键字:另一种 一种 参数 | 更新日期: 2023-09-27 18:06:29

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

谢谢!

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

您可以向子表单添加一个公共成员。方法或属性。例如

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) { ... }

注意:表单、子表单和控件都是类,你可以用它们做你可以用"普通"类做的所有事情。


根据您的一个评论,您使用的不是子表单,而是对话框表单。我将调用一个表单(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);