如何将两个或多个构造函数传递给另一个窗体?

时间:2018-05-30 01:09:27

标签: c#

我有一个包含数据的列表视图。我想将这些数据转换为一个名为view / edit form的表单。 我所做的是当点击一行时它会将数据传输到一组隐藏的文本框,这些文本框将被存储 列表视图中的数据。我的计划是将其转移到另一种形式。

在我看来&编辑按钮,我已经使用构造函数传递文本(1,2和3)。使用该文本是为了确定 如果该表单的内容将被禁用(1 - 查看,所以禁用除关闭按钮以外的所有内容,2 - 添加,所以 一切都已启用& 3-编辑,启用了一些文本框,有些文本框没有。)

如果你想知道我为什么选择这个,那是因为我只想为这3个功能使用1个表格。

我的尝试是使用另一个构造函数将数据从frm1的文本框传递到frm2。我怎么去传球 2个不同的构造函数?

我在这里有一段代码可以为您提供更多信息:

表单1

public string x = "1", y = "2", z = "3";

public void Viewbtn_Click(object sender, EventArgs e)
{
    Identifier1.Text = x;

    if (Mastercombo.Text == "Suppliers")
    {
        Supplier viewsupp = new Supplier(Identifier1.Text);
        viewsupp.Show();
    }
 }

表格2

public Supplier(string identifier)
{
    InitializeComponent();
    identifierlbl.Text = identifier;
}

private void Supplier_Load(object sender, EventArgs e)
{
    if(identifierlbl.Text == "1")
    {
        SuppID.Enabled = false;
        SuppName.Enabled = false;
        SuppTIN.Enabled = false;
    }
    else if(identifierlbl.Text == "3")
    {
        SuppID.Enabled = false;
    }
}

2 个答案:

答案 0 :(得分:0)

根据评论,我认为你要求的是重载构造函数,例如:

public Supplier(string identifier)
{
     InitializeComponent();
     identifierlbl.Text = identifier;
}

public Supplier(string identifier, string identifierTwo)
{
     InitializeComponent();
     identifierlbl.Text = identifier;
}

答案 1 :(得分:0)

  

[如何]将两个或多个构造函数传递给另一个窗体

这可能无法准确描述您的需求。根据需要使用额外的参数重载构造函数是合理的。但这会让你知道你试图调用哪个超载,这通常会增加一个不同的问题。

您可以提供一个类FormArgs,它将所有数据作为一个包装精美的对象。然后,当它到达另一个表单时,您只需根据需要使用它。

public class FormArgs
{
    private string identifier;
    // text boxes or values
    // the rest...
}

然后,

public Supplier(FormArgs args) {...}

但是,这并未涉及将这些表格和数据相互绑定。