通过按下按钮更改状态Visible为True的字符 [英] change the character of the state Visible as True by pressing a button

查看:134
本文介绍了通过按下按钮更改状态Visible为True的字符的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何将一个特殊的表格Visible = False作为按下按钮(例如ctrl或alt + k)来改变状态Visible为True的字符?

How can a form that is characteristic Visible = False it as pressing a button ( For example ctrl or alt + k) to change the character of the state Visible as True?

推荐答案

我认为你的意思是询问如何使用热键在True和False之间切换表单的Visible属性。如果是这样,那么你可以这样做:



I think you mean to ask how to use a hotkey to toggle the form's Visible property between True and False. If this is so, then you can do it like this:

Imports System.Runtime.InteropServices

Public Class Form1

   ' WM_HOTKEY Message Ref: http://msdn.microsoft.com/en-us/library/windows/desktop/ms646279%28v=vs.85%29.aspx
    Private Const WM_HOTKEY As Int32 = &H312
    Private Const MOD_ALT As Int32 = 1          'Alt key modifier for WM_HOTKEY
    Private Const MOD_CONTROL As Int32 = 2      'Ctrl key modifier for WM_HOTKEY


   Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
      RegisterHotKey(Me.Handle, 1, MOD_ALT, Keys.K)     ' alt-k
      RegisterHotKey(Me.Handle, 2, MOD_CONTROL, Keys.K) ' ctrl-K
   End Sub

   Private Sub Form1_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
      ' make sure you unregister the hotkeys
      UnregisterHotKey(Me.Handle, 1)
      UnregisterHotKey(Me.Handle, 2)
   End Sub

   Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
      If m.Msg = WM_HOTKEY Then
         Dim key As Keys = CType(m.LParam.ToInt32 >> 16, Keys)
         Dim modifier As Int32 = CType((m.LParam.ToInt32 << 16) >> 16, Keys)
         Select Case key
            Case Keys.K
               If modifier = MOD_ALT OrElse modifier = MOD_CONTROL Then toggleVisible()
         End Select
      End If
      MyBase.WndProc(m)
   End Sub

   Private Sub toggleVisible()
      Me.Visible = Not Me.Visible
      If Me.Visible Then Me.BringToFront()
   End Sub

   ' ref: http://msdn.microsoft.com/en-us/library/windows/desktop/ms646309%28v=vs.85%29.aspx
    <DllImport("User32.dll")> _
    Private Shared Function RegisterHotKey(ByVal hwnd As IntPtr, _
                                           ByVal id As Int32, _
                                           ByVal fsModifiers As Int32, _
                                           ByVal vk As Keys) As Int32
    End Function

   ' ref: http://msdn.microsoft.com/en-us/library/windows/desktop/ms646327%28v=vs.85%29.aspx
    <DllImport("User32.dll")> _
    Private Shared Function UnregisterHotKey(ByVal hwnd As IntPtr, ByVal id As Int32) As Int32
    End Function
End Class


这篇关于通过按下按钮更改状态Visible为True的字符的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆