我有两种形式。说 FormA FormB

我从FormA叫FormB使用
frmB.Show();

在FormB中,我有两个文本框和一个组合框控件。
假定用户在这两个文本框中输入一些数据,然后从Form2的组合框中选择一个项目,然后单击,然后单击按钮。

单击“我希望这些文本框用户输入值”后,组合框选择的项目值将返回 FormA

我如何使用C#实现这一目标。

最佳答案

或者,您可以将对象从FormA传递到FormB,然后将其属性绑定(bind)到FormB中的控件。如果您希望在单击“确定”按钮时通知FormA,则可以在数据容器类中声明一个事件,在FormA中进行订阅并从FormB中触发它。

成为DataContainer您定义的某个类

public class DataContainer
{
    public event EventHandler AcceptedChanges;
    protected virtual void OnAcceptedChanges()
    {
        if ((this.AcceptedChanges != null))
        {
            this.AcceptedChanges(this, EventArgs.Empty);
        }
    }

    public void AcceptChanges()
    {
        this.OnAcceptedChanges();
    }

    public string Text1 { get; set; }
    public string Text2 { get; set; }
}

在FormA中:
    private void button4_Click(object sender, EventArgs e)
{
    DataContainer data = new DataContainer();
    data.Text1 = "text1";
    data.Text1 = "text2";

    Form2 frm = new Form2();
    frm.Data = new DataContainer();
    data.AcceptedChanges += new EventHandler(data_AcceptedChanges);
    frm.Show();
}

void data_AcceptedChanges(object sender, EventArgs e)
{
    // your code here
}

并在FormB中:
public DataContainer Data { get; set; }

private void Form2_Load(object sender, EventArgs e)
{
    textBox1.DataBindings.Add(new Binding("Text", Data, "Text1"));
    textBox2.DataBindings.Add(new Binding("Text", Data, "Text2"));
}

private void button1_Click(object sender, EventArgs e)
{
    Data.AcceptChanges();
}

您还应该在DataContainer类上实现INotifyPropertyChanging和INotifyPropertyChanged以便与绑定(bind)配合使用。

10-04 18:51