从2种不同的方法调用表单

时间:2013-08-23 02:08:12

标签: c# forms button

我正在尝试从发送数据的按钮访问表单,以及只查看表单的menustrip按钮,没有数据传输。

发送数据我的类名是:

    public xSecForm(string dataRecieved)
    {
        InitializeComponent();

        xSavedList.Text = dataRecieved;
    }

这允许我在第一个按钮上发送数据。

我看到其他帮助说要放

    xSecForm f2 = new xSecForm()
    f2.Show();

在菜单按钮中只显示没有数据传递的窗口,但是因为 (字符串dataRecieved)在表单的末尾,它一直给我错误。

我希望有可能在没有改变数据发送方式的情况下做到这一点。

1 个答案:

答案 0 :(得分:3)

您可以尝试几种方法,每种方法都有其优点和缺点。

1)你的第二个表单可以有2个构造函数。一个是默认的(不会传入数据),另一个是允许你传入一个字符串。

public xSecForm(string dataReceived)
{
    InitializeComponent();
    xSavedList.Text = dataReceived;
}

public xSecForm()
{
    InitializeComponent();
}

这样你可以在发送或不发送字符串的情况下创建第二个表单的新实例。缺点是你只能在第一次创建对象时传入数据。

2)在第二种形式中创建一个公共属性,以允许第一种形式自己注入数据。在你的第二种形式:

public string SavedListData
{
    set { xSavedList.Text = value; }
    get { return xSavedList.Text; }
}

然后在你的主窗体上(假设你有一个默认的构造函数)

xSecForm f2 = new xSecForm();
f2.SavedListData = "asdf";
f2.Show();

这种方法的好处是你可以随时获取/设置数据,即使你已经加载并使用了第二种形式。