1

我和这个人或多或少有同样的问题,但他的帖子已经有 2 年了,所以我想我可以开一个新的。

在我使用标签的程序中,我发现标签上的助记符会触发enter选项卡顺序中下一个控件的事件。所以实现clickenter方法。但问题就在这里。我创建了一个测试程序。该程序保留了两个标签,一个按钮和一个文本框。

测试程序布局

测试程序标签顺序

第二个标签只是控制enter事件是否被触发。当我点击ALT下划线时看起来很好但是当我按下第二个键(for Reset)时没有任何反应。此外,如果出现下划线并且我ALT再次按下该键,他不会消失并且button完全忽略是否ALT按下。我用 VisualStudio 2013 搬到了另一台电脑,但得到了相同的结果。我下载了 VisualStudio 2017,尝试创建新程序 => 也不起作用。

英语不是我最了解的语言,所以如果你能在我写错时给我提示,我很高兴。我希望有一个人可以帮助我。

Form1.cs

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void reset_Click(object sender, EventArgs e)
        {
            textBox.Text = "";
        }

        private void button_Click(object sender, EventArgs e)
        {
            textBox.Text = "Button";
        }

        private void nothing_Enter(object sender, EventArgs e)
        {
            textBox.Text = "nothing";
        }
    }
}

Form1.Designer.cs

        this.reset.Click += new System.EventHandler(this.reset_Click);
        this.button.Click += new System.EventHandler(this.button_Click);
        this.nothing.Enter += new System.EventHandler(this.nothing_Enter);
4

1 回答 1

2

当您在标签上使用助记符时 - 焦点转到表单上具有更高选项卡索引的下一个可选对象(它不会像选项卡那样环绕到下一个可选控件)。由于默认情况下标签是不可选择的 - 那么您在重置标签后没有可选择的控制 - 所以似乎没有任何事情发生。

如果您添加另一个具有更高选项卡索引的可选控件 - 比如说一个选项卡索引值设置为 4 的文本框 - 那么您会发现按 Alt-r 将按预期转到该控件。

如果您想让标签可选择,那么您可以创建一个派生类,如这里的答案所示:让标签参与控制选项卡 - 如果您将“无”标签设为 SelectableLabel - 然后按 Alt-r 将导致焦点移动到那个标签。

于 2017-10-30T11:02:21.940 回答