开发者

"x" To Minimize WinForm, ContextMenu To Close WinForm?

开发者 https://www.devze.com 2023-01-03 19:23 出处:网络
I have a WinForm that I want to minimize when the \"x\" in the top right corner is clicked. To accomplish this, I have:

I have a WinForm that I want to minimize when the "x" in the top right corner is clicked. To accomplish this, I have:

    private void Form_FormClosing(object sender, FormClosingEventArgs e)
    {
        e.Cancel = true;
        WindowState = FormWindowState.Minimized;
开发者_JAVA技巧    }

That's all well and good, but now I have a context menu that has the option to close the WinForm, but because of the code above, it simply minimizes the window.

How can I get everything to work the way I want it to?


Have the click event handler set a bool flag that is used in the FormClosing event handler.

Stripped down code sample:

public class YourForm : Form
{    
    private bool _reallyClose;

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

    private void Form_FormClosing(object sender, FormClosingEventArgs e)
    {
        if (!_reallyClose)
        {
            e.Cancel = true;
            WindowState = FormWindowState.Minimized;
        }
    }

}


You need to set a flag when clicking the Close menu.

You can then check for the flag in FormClosing and do nothing.


Both the X and the system context menu send the same Windows Message, don't think you can seperate the action easily. It's also the Alt+F4 message.

I'd also say I wouldn't like this non standard behavior, if I hit the X I want it closed, not minimised, thats what the button 2 to the left is for.

Perhaps the best approach to have the look and feel you want is not to display the default X button - turn off the default feature, but instead draw your own with your own event. This may mess with the system context menu so that you no longer have a close option there either.


Can you check the sender to see if it is a contextmenuitem and act appropriately?

0

精彩评论

暂无评论...
验证码 换一张
取 消