【问题标题】:How simulate control (button) click with left or right key avoiding automatic interactions at listbox如何模拟控制(按钮)单击左键或右键避免列表框自动交互
【发布时间】:2018-02-11 07:36:38
【问题描述】:

我有 3 个列表框,其中 1 个列出文件夹,1 个列出子文件夹,第三个列出当前子文件夹中的图片文件。 1 图片框加载第三个列表框的选定项目(图片)。 我有 2 个按钮来更改调用此函数的上一张图片或下一张图片(这会使图片列表循环以使其无休止):

Private Sub ShowNextImage()

    If ListBox5.SelectedIndex = ListBox5.Items.Count - 1 Then
        ListBox5.SelectedIndex = 0
    Else
        ListBox5.SelectedIndex += 1
    End If
    Me.PictureBox1.Image = Image.FromFile(lastfoldr & (ListBox5.SelectedItem))
End Sub

改变到右边的按钮是这样的:

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    ShowNextImage()
End Sub

然后我添加了更改图片框大小并在单击图片框时全屏显示的功能。

我还添加了picturebox_keydown 事件来检测键盘左键或右键的按键。 作为全屏最好的办法是直接从键盘更改照片并隐藏或发送按钮,为了使其工作,首先我尝试直接调用上一个/下一个图像功能,但它不起作用!:

Private Sub PictureBox1_KeyDown(sender As Object, e As KeyEventArgs) Handles PictureBox1.KeyDown
 ShowNextImage()
 End If

问题出现在按左右键时:所选文件夹或子文件夹更改为下一个项目,第三个 ListBox 更新图像列表,一切都松了! 第二次尝试我使用:

Private Sub PictureBox1_KeyDown(sender As Object, e As KeyEventArgs) Handles PictureBox1.KeyDown
 If e.KeyCode = Keys.Right Then
 ActiveControl = Nothing 'also I try this!
 Button1.PerformClick()  '< simulate the click of the button
 End If

但也一样!当前选定的文件夹发生变化,列表变得松散。 在表单上物理单击按钮可以正确更改图像,而不是使用我无法使用的键来使其工作!我做错了什么?我错误地调用(模拟)按钮点击??

【问题讨论】:

    标签: vb.net listbox focus keypress listboxitem


    【解决方案1】:

    为了接收按键,PictureBox 必须具有焦点,此类控件很少具有焦点,因为您无法真正选择它们。

    最好的方法是覆盖表单的ProcessCmdKey() function 并使用它来防止左右键按下到达任何子控件。这样做会阻止列表框的选择发生变化。

    Protected Overrides Function ProcessCmdKey(ByRef msg As System.Windows.Forms.Message, ByVal keyData As System.Windows.Forms.Keys) As Boolean
        If keyData = Keys.Left Then
            ShowPrevImage()
            Return True 'This prevents the key press from reaching any child controls.
        ElseIf keyData = Keys.Right Then
            ShowNextImage()
            Return True
        End If
        Return MyBase.ProcessCmdKey(msg, keyData)
    End Function
    

    【讨论】:

      猜你喜欢
      • 2022-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多