如何禁用标题栏的关闭按钮,或者改变关闭按钮原有的关闭操作,让它执行最小化或是到系统托盘显示的操作,哪位大侠知道的告告啊~~~小弟先谢了~~

解决方案 »

  1.   

    把窗体的ControlBox设为false 就能取消显示关闭按钮。
      

  2.   

    protected override void WndProc(ref Message m)
    {
    const int WM_SYSCOMMAND = 0x0112; 
    const int SC_CLOSE = 0xF060; 
    if (m.Msg == WM_SYSCOMMAND && (int) m.WParam == SC_CLOSE)


    this.Visible = false;   //隐藏
                      this.WindowState = FormWindowState.Minimized;  //最小化
    return;

    base.WndProc(ref m); 
    }
      

  3.   

    private void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e)
    {
    e.Cancel = true;
    }
      

  4.   

    谢谢各位,真的太感谢你们了,哈哈~~
    yf1025(小桥,流水,人家)朋友的方法是C++的吧,呵呵,可惜小弟我不是很会~~
    非常谢谢你们啊~~
      

  5.   

    看不到关闭:
    //设置窗体属性:
    ControlBox = false;
    Text = "";
    //修改窗体关闭的执行:
    form1_Closing(...)
    {
        //你的操作
        ...
        //如果不关闭窗体
        e.Cancel = false;
    }
      

  6.   

    /// <summary>
    /// 重写OnClosing使点击关闭按键时窗体能够缩进托盘
    /// Author: 武眉博 [email protected]
    /// 2005-4-27
    /// </summary>
    /// <param name="e"></param>
    protected override void OnClosing(CancelEventArgs e)
    {
    this.ShowInTaskbar = false;
    this.WindowState = FormWindowState.Minimized;
    e.Cancel = true; 
    }
      

  7.   

    yf1025(小桥,流水,人家) 的方法是捕获系统消息,来实现的.那样的话,关闭按钮还是处于可选状态.如果要将其变灰(不可选),还需要用到API32的.
    //传入的参数是第几个按钮禁用.相对于关闭按钮你传入int 类型 6 就可以了(关闭是系统菜单的第七个按钮) private void SetMenuDisable(int intC)
    {
    hwnMenu = GetSystemMenu(this.Handle,false);
    EnableMenuItem(hwnMenu,intC,MF_BYPOSITION|MF_DISABLED);
    }用到的两个API
    [DllImport("user32", EntryPoint="EnableMenuItem")]
    private static extern int EnableMenuItem (
    IntPtr hMenu,
    int wIDEnableItem,
    int wEnable
    ); [DllImport("user32", EntryPoint="AppendMenu")]
    private static extern int AppendMenu (
    IntPtr hMenu,
    int wFlags,
    int wIDNewItem,
    string lpNewItem
    );用到的两个常数:
    private const int MF_BYPOSITION=0x400;
    private const int MF_ENABLED=0x0; //设为非禁用时用到
    private const int MF_DISABLED=0x2;用到的命名空间:
    using System.Runtime.InteropServices;
      

  8.   

    Sorry,发错.不用appendmenu,是用到了getsystemmenu,如下 [DllImport("user32", EntryPoint="GetSystemMenu")]
    private static extern IntPtr GetSystemMenu (
    IntPtr hwnd,
    bool bRevert
    );
      

  9.   


    把窗体的ControlBox设为false 就能取消显示关闭按钮。easy
      

  10.   

    支持sxlf(房客) 和diablo1003(小叶)