我是C#的新手,我正在使用Windows窗体.我有Form1
和Form2
.在form1
我使用以下代码显示form2
:
Form2 frm2 = new Form2();
private void button1_Click(object sender, EventArgs e)
{
frm2.Show();
}
Run Code Online (Sandbox Code Playgroud)
我想要的是:我Form2
每次都要展示一些活动.我放置messageBox
了Form2Shown
事件(进行测试),但它只被触发一次,下次我显示Form2
它永远不会被解雇.我也尝试使用,formLoad
但它只会被解雇一次,下次我表明form2
它永远不会被解雇.我知道我可以使用frm2.ShowDialog()每次触发显示的事件但我不想出于某些原因.
private void Form2_Shown(object sender, EventArgs e)
{
MessageBox.Show("Form2 is shown"); // this gets fired only once when form2 is shown.
// when I show form2 again it does not get fired.
}
private void button_Hide_Form2_Click(object sender, EventArgs e)
{
// this is in form2
Hide();
}
Run Code Online (Sandbox Code Playgroud)
我的问题是:任何人都知道如何每次form2
展示一个事件?我很高兴获得一些新想法来解决这个问题.谢谢
BWA*_*BWA 10
来自MSDN
Shown事件仅在第一次显示表单时引发; 随后最小化,最大化,恢复,隐藏,显示或无效和重新绘制将不会引发此事件.
在MSDN上,您可以看到引发了哪些事件.并选择一个符合您要求的.
一些例子.
Form1 - 两个按钮,显示和隐藏
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
Form2 frm = new Form2();
private void btnShow_Click(object sender, EventArgs e)
{
frm.Show();
}
private void btnHide_Click(object sender, EventArgs e)
{
frm.Hide();
}
}
Run Code Online (Sandbox Code Playgroud)
Form2 - 显示时显示msgbox.我改变形式关闭行为隐藏形式不破坏.
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
private void Form2_VisibleChanged(object sender, EventArgs e)
{
if(this.Visible == true)
MessageBox.Show("Hey");
}
private void Form2_FormClosing(object sender, FormClosingEventArgs e)
{
e.Cancel = true;
this.Hide();
}
}
Run Code Online (Sandbox Code Playgroud)