日期:2014-05-18  浏览次数:20759 次

怎样阻止用户单击窗体的X关闭,而我用代码this.Close()可以关闭?
怎样阻止用户单击窗体的X关闭,而我用代码this.Close()可以关闭?

我用以下代码发现了这个问题。
                private   void   Form2_FormClosing(object   sender,   FormClosingEventArgs   e)
                {
                        if   (e.CloseReason   ==   CloseReason.UserClosing)
                        {
                                e.Cancel   =   true;
                                MessageBox.Show( "请使用关闭按钮退出 ");
                        }
                }

                private   void   button1_Click(object   sender,   EventArgs   e)
                {
                        this.Close();
                }

------解决方案--------------------
直接不然让X显示
使用空白窗体
------解决方案--------------------
声明一个变量:boolean UserClose=false;
private void Form2_FormClosing(object sender, FormClosingEventArgs e)
{
if (!UserClose)
{
e.Cancel = true;
MessageBox.Show( "请使用关闭按钮退出 ");
}
}

private void button1_Click(object sender, EventArgs e)
{
UserClose=true;
this.Close();
}

------解决方案--------------------
过虑消息。
private const int SC_CLOSE = 61536;
protected override void WndProc(ref Message m)
{
if (m.WParam.ToInt32() == SC_CLOSE)

//用户单击窗体的X关闭时

else
base.WndProc(ref m);
}