none
請問如何隱蔵右上角的"X" RRS feed

  • 問題

  • 請問有沒有辦法隱蔵windows form右上角的"X"

    或是有辦法判斷按下的是"X", 因有原因, 無法使用form closing event

    謝謝

    2010年8月19日 上午 03:38

解答

  • Hi,

    覆寫後做完你要做的事

    Return掉

    不要執行MyBase.WndProc(m)試試


    謙卑學習,持之以恆,才能不斷的Level Up http://www.dotblogs.com.tw/larrynung/
    • 已標示為解答 taxchen 2010年8月19日 上午 04:56
    2010年8月19日 上午 04:15
  • Public Class Form1
    
      ' 覆寫 WndProc 進行視窗訊息處理
      Protected Overrides Sub WndProc(ByRef m As Message)
        Const WM_SYSCOMMAND = &H112
        Const SC_CLOSE = &HF060 ' 關閉
        ' Const SC_MIN = &HF020 ' 最小化
        ' Const SC_MAX = &HF030 ' 最大化
        If m.Msg = WM_SYSCOMMAND Then
          If m.WParam = SC_CLOSE Then
            ' =============== 你要做的事情 ==================
            MessageBox.Show("關閉")
            ' =============== 你要做的事情 ==================
            Return
          End If
        End If
        MyBase.WndProc(m)
      End Sub
    
    End Class
    
    

    歡迎參觀我的Blog.NET菜鳥自救會
    • 已標示為解答 taxchen 2010年8月19日 上午 04:55
    2010年8月19日 上午 04:47
    版主

所有回覆

  • VB.net 按下control box的 _ 執行的動作

    http://social.msdn.microsoft.com/Forums/zh-TW/232/thread/9ba83e1a-57f0-4a57-831a-c19d02cbc92e

    覆寫 WndProc 進行視窗訊息處理,然後判斷 m.WParam 是 SC_CLOSE = &HF060 時,做你要做的事情


    歡迎參觀我的Blog.NET菜鳥自救會
    2010年8月19日 上午 03:45
    版主
  • (1) Controlbox屬性設為False..右上方的控制盒就會消失

    (2) 你可以在Form.Closing 事件委派函式中決定是否取消關閉的行為

    Form. . :: . Closing 事件


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。
    2010年8月19日 上午 03:46
    版主
  • >>覆寫 WndProc 進行視窗訊息處理,然後判斷 m.WParam 是 SC_CLOSE = &HF060 時,做你要做的事情

    請問我要如何在做完我要做的事後, 讓它不要關閉我的form ?

    2010年8月19日 上午 04:03
  • Hi,

    覆寫後做完你要做的事

    Return掉

    不要執行MyBase.WndProc(m)試試


    謙卑學習,持之以恆,才能不斷的Level Up http://www.dotblogs.com.tw/larrynung/
    • 已標示為解答 taxchen 2010年8月19日 上午 04:56
    2010年8月19日 上午 04:15
  • Public Class Form1
    
      ' 覆寫 WndProc 進行視窗訊息處理
      Protected Overrides Sub WndProc(ByRef m As Message)
        Const WM_SYSCOMMAND = &H112
        Const SC_CLOSE = &HF060 ' 關閉
        ' Const SC_MIN = &HF020 ' 最小化
        ' Const SC_MAX = &HF030 ' 最大化
        If m.Msg = WM_SYSCOMMAND Then
          If m.WParam = SC_CLOSE Then
            ' =============== 你要做的事情 ==================
            MessageBox.Show("關閉")
            ' =============== 你要做的事情 ==================
            Return
          End If
        End If
        MyBase.WndProc(m)
      End Sub
    
    End Class
    
    

    歡迎參觀我的Blog.NET菜鳥自救會
    • 已標示為解答 taxchen 2010年8月19日 上午 04:55
    2010年8月19日 上午 04:47
    版主