【问题标题】:calling a form from 2 different methods从 2 种不同的方法调用表单
【发布时间】:2013-08-23 02:08:11
【问题描述】:

我正在尝试从一个发送数据的按钮和一个只查看表单的菜单栏按钮访问表单,没有传输数据。

要发送数据,我的类名是:

    public xSecForm(string dataRecieved)
    {
        InitializeComponent();

        xSavedList.Text = dataRecieved;
    }

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

我看到其他帮助说要放

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

在菜单按钮中只显示窗口而不传递数据,但是由于 (string dataRecieved) 在表单的末尾,它一直给我错误。

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

【问题讨论】:

  • 查看link
  • 错误说明了什么
  • 你可以有多个构造函数——一个传递数据,一个不传递数据。

标签: c# forms button


【解决方案1】:

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

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();

这种方法的好处是您可以随时获取/设置数据,即使在您加载并使用了第二种表单之后也是如此。

【讨论】:

  • 我喜欢你提出的第一个解决方案,但由于某种原因它不会打开第二个表单。
  • 没关系,忘了给它一个点击命令。只是想办法让它不删除我保存的信息,我的另一个按钮在点击时添加。
猜你喜欢
  • 1970-01-01
  • 2016-01-16
  • 1970-01-01
  • 1970-01-01
  • 2019-06-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多