none
VB.Net Form顯示為最上層 RRS feed

  • 問題

  • 各位前輩

    我設計的Form大小為全螢幕的大小,包含會把下面工作列蓋掉

    我用   

    MyBase.Hide()
    Me.Show()

    是可以讓form全螢幕

    但是按鍵盤上的視窗鍵就會彈出工作列

    請問是否有其他方式可以讓form顯示在最上層

    且按任何按鍵都不會影響最上層顯示

     

    2012年1月10日 上午 02:27

解答

所有回覆

  • 請將form的屬性TopMost = true
    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/
    2012年1月10日 上午 02:41
  • 馬客前輩

    這個方法我用過了

    我按鍵盤上的視窗鍵一樣會彈出工作列

    2012年1月10日 上午 03:13
  • Hi,

    你需要的是這個吧

    [C#][WinForm]如何控制工作列


    謙卑學習,持之以恆,才能不斷的Level Up http://www.dotblogs.com.tw/larrynung/
    2012年1月10日 上午 03:32
  • 2012年1月10日 上午 03:39
  • 感覺不太像

    因為這只是控制工作列而已

    我要的是form視窗永遠最上層

    不會因為我按其他按鍵而被其他Form及windows介面所擋住或被取代調

     

    2012年1月10日 上午 03:47
  • TopMost = true + 在active事件中去顯示您原本要做的事!

     


    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/
    2012年1月10日 上午 03:59
  • disable windows, ctrl, alt, del key

    http://www.codeguru.com/forum/showthread.php?threadid=454892


    歡迎參觀我的Blog.NET菜鳥自救會
    2012年1月10日 上午 04:38
    版主
  • Hi,

    全螢幕在.NET中的寫法是

     

                this.FormBorderStyle = FormBorderStyle.None;
                this.WindowState = FormWindowState.Maximized;

     

     

    如果要在最上層~不被其他視窗蓋在上面,那就是要設定

    this.TopMost = true;

     

    如果要讓按Win鍵後工作列不會蓋住

    那就是要把工作列給隱藏

                IntPtr TaskBar = FindWindow("Shell_TrayWnd", "");
                ShowWindow(TaskBar, HIDE);


    如果你要讓他不被按任何系統熱鍵影響而被蓋住,那可能要去想辦法把系統的訊息給攔截

    或是用個Timer不斷將視窗帶到上面,亦或是接收某些系統訊息(像是lostfocus之類的)後再將視窗帶到上面


    謙卑學習,持之以恆,才能不斷的Level Up http://www.dotblogs.com.tw/larrynung/
    2012年1月10日 上午 04:41
  • Hi!

    我將下列三行放到 timer中

            Me.FormBorderStyle = Windows.Forms.FormBorderStyle.None
            Me.WindowState = FormWindowState.Maximized
            Me.TopMost = True

    結果是我按一下按鍵就會閃一下

    是否有方式可以攔截按鍵的訊息

    例如: Alt+Tab    Crtl+Alt+Del   

    使得程式執行是,這些組合鍵是沒有作用的

    2012年1月11日 上午 02:43
  • 關鍵字: hook keyboard
    以下為簽名檔,如果你愛拉椅子坐那就是你的問題。
    先查MSDN文件庫
    再用GOOGLE搜尋
    才到論壇來發問

    這是論壇不是技術支援中心
    沒有人得無償解答你的問題

    在標題或文章註明很急
    不會增加網友回覆速度
    2012年1月11日 上午 02:55
  • 感謝 Alex_Lee大大提供的方法

    我看了很多有關全域鍵盤欄截 Keyboard Hook的資料

    有些地方還是沒有完全瞭解

    不過我採用WinAPI   keybd_event的方式完成

    攔截各種組合按鍵的訊號

    如Ctrl+Alt+del、Alt+F4、Alt+Tab、LWin、RWin、Ctrl+Esc等按鍵

     

    Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown
    		Dim KeyCode As Short = e.KeyCode
    		Dim Shift As Short = e.KeyData \ 65536
    		If KeyCode = 91 Or KeyCode = 92 Then
    			keybd_event(20, 0, 2, 0) 
    			keybd_event(91, 0, 2, 0) ' Lwin
    			keybd_event(92, 0, 2, 0) ' Rwin
    		End If
    		If Shift = 4 And KeyCode = 18 Then keybd_event(18, 0, 2, 0) 'Alt+Tab 
    		If Shift = 2 And KeyCode = 17 Then keybd_event(17, 0, 2, 0) 'Ctrl+Esc 
    		If Shift = 4 And KeyCode = 115 Then keybd_event(115, 0, 2, 0) 'Alt+F4 
    		If KeyCode = 112 Then keybd_event(112, 0, 2, 0) 'F1 
    		KeyCode = 0
    	End Sub
    




    2012年2月1日 上午 07:25