英语不是我的母语,所以请多多包涵。
我的问题是要使一个表单(例如form 2
)如何实时显示form 1
中正在键入的内容。我认为
TextChanged
事件将被使用,但是下一步是什么?
答案 0 :(得分:0)
在form2上引发一个事件,然后从form1调用它
在Form1上:
private Form2 frm2;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
var text = Textbox1.Text;
frm2.TextChanged.Invoke(text , new EventArgs());
}
private void Form1_Load(object sender, EventArgs e)
{
frm2 = new Form2();
frm2.Show();
}
以及在form2上
public EventHandler TextChanged;
public Form2()
{
InitializeComponent();
TextChanged += HandleTextChanged;
}
private void HandleTextChanged(object sender, EventArgs e)
{
label1.Text = (string) sender;
}
答案 1 :(得分:0)
我不想让两种形式互相认识。 您可以改为执行以下操作:
find/replace
答案 2 :(得分:0)
为使其简单且易于操作,我将在Form2
中创建一个属性,并在Form1.TextChanged
事件中对其进行更新:
public partial class Form1 : Form
{
private Form2 _form2;
public Form1()
{
InitializeComponent();
this.textBox1.TextChanged += (sender, e) =>
{
_form2.TextBoxValue = textBox1.Text;
};
_form2 = new Form2();
_form2.Show();
}
}
public partial class Form2 : Form
{
public string TextBoxValue
{
get => textBox1.Text;
set => textBox1.Text = value;
}
public Form2()
{
InitializeComponent();
}
}
请注意,您需要将Form1
和Form2
名称更改为应用程序中的实际表单类名称(以及textBox1
名称)。
修改:
根据注释中的要求,如果要在两个表单中更新任一文本框的更改,则需要向两个表单添加TextBoxValue
属性,并使两个表单中的事件处理程序都可以更改该属性。我还整理了一下代码。
public partial class Form1 : Form
{
private Form2 _form2;
public string TextBoxValue
{
get => textBox1.Text;
set => textBox1.Text = value;
}
public Form1()
{
InitializeComponent();
this.textBox1.TextChanged += (sender, e) =>
{
_form2.TextBoxValue = textBox1.Text;
};
_form2 = new Form2();
_form2.Show();
}
}
public partial class Form2 : Form
{
private Form1 _form1;
public string TextBoxValue
{
get => textBox1.Text;
set => textBox1.Text = value;
}
public Form2()
{
InitializeComponent();
this.textBox1.TextChanged += (sender, e) =>
{
_form1.TextBoxValue = textBox1.Text;
};
this.Shown += (sender, e) =>
{
_form1 = (Form1)Application.OpenForms["Form1"];
};
}
}