我有两种形式。说 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)配合使用。