我有一个窗口表单,用于验证文本框中是否有文本,但是在浏览表单的其余部分时效果很好,但是,如果用户只想单击右上角的关闭(x)按钮而不是实际运行应用程序,我得到文本的异常处理消息不在文本框中而不是退出应用程序。我环顾四周,看了一下关于检测关闭按钮的其他问题,这让我尝试了下面的内容。我仍然收到事件消息而不是退出。单击关闭按钮时如何绕过此消息?
现在,我可以关闭应用程序的唯一方法是,如果我在文本框中放入一些东西,然后单击关闭(x)按钮。
private void testTextBox_Validating(object sender, CancelEventArgs e)
{
//check to see if there is anything entered into the main text box before choosing an option
if (string.IsNullOrEmpty(testTextBox.Text))
{
if (sender.Equals(CloseReason.UserClosing))
{
Application.Exit();
}
else
{
MessageBox.Show("You have not entered anything to work with. \n Please enter something.");
e.Cancel = true;
}
}
}
答案 0 :(得分:0)
我有两种形式:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
var form2 = new Form2();
form2.Show();
}
}
另一个:
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
protected override void OnClosing(CancelEventArgs e)
{
if (!string.IsNullOrWhiteSpace(textBox1.Text))
{
Application.Exit();
}
else
{
e.Cancel = true;
}
base.OnClosing(e);
}
}
它对我有用。如果我使用textblock中的text关闭form2,它将退出应用程序。