Вопрос по winforms, .net, c# – TabIndex не работает правильно

7

У меня есть приложение Windows Form. На форме есть три группы. Каждый групповой ящик содержит несколько элементов управления. Пожалуйста, смотрите изображение. form

Существует групповой блок "флаг" который содержит несколько флажков. & Quot; флаг & Quot; находится внутри "groupbox1". Я использовал клавишу Tab для прохождения каждого элемента управления, но он не работает для флажков в поле «flag». Я установил правильный tabindex для каждого элемента управления.

Это работает для текстовых полей и кнопок, но флажки.

Зачем? Спасибо за помощь.

EDIT

 // groupBox2
        // 
        this.groupBox2.Controls.Add(this.pictureBox10);
        this.groupBox2.Controls.Add(this.pictureBox9);
        this.groupBox2.Controls.Add(this.pictureBox8);
        this.groupBox2.Controls.Add(this.pictureBox7);
        this.groupBox2.Controls.Add(this.chkStoplight);
        this.groupBox2.Controls.Add(this.lblStoplight);
        this.groupBox2.Controls.Add(this.chkIsCount);
        this.groupBox2.Controls.Add(this.chkExceptionFlag);
        this.groupBox2.Controls.Add(this.chkIsActive);
        this.groupBox2.Controls.Add(this.lblIsActive);
        this.groupBox2.Controls.Add(this.lblExceptionFlag);
        this.groupBox3.Controls.Add(this.lblIsCount);
        this.groupBox2.Location = new System.Drawing.Point(16, 201);
        this.groupBox2.Name = "groupBox2";
        this.groupBox2.Size = new System.Drawing.Size(321, 70);
        this.groupBox2.TabIndex = 10;
        this.groupBox2.TabStop = true;
        this.groupBox2.Text = "Flags";

        // 
        // chkStoplight
        // 
        this.chkStoplight.AutoSize = true;
        this.chkStoplight.Location = new System.Drawing.Point(44, 25);
        this.chkStoplight.Name = "chkStoplight";
        this.chkStoplight.Size = new System.Drawing.Size(15, 14);
        this.chkStoplight.TabIndex = 0;
        this.chkStoplight.UseVisualStyleBackColor = true;

        In the property, I found TabStop is true for chkStoplight.
this.groupBox1 = new System.Windows.Forms.GroupBox (); user1108948
Код это просто цифры для tabindex. Все элементы управления активны, кроме флажков. user1108948
пожалуйста, сообщите нам, какой элемент управления активируется после постоянного нажатия клавиши Tab Ozgur Dogus
Ты используешьSystem.Windows.Controls.GroupBox или жеSystem.Windows.Forms.GroupBox? Jon Senchyna
Не могли бы вы опубликовать свой код? Dante

Ваш Ответ

2   ответа
9

ЗаSystem.Windows.Forms.GroupBox:

Вы должны убедиться, что ваш GroupBoxflag имеет соответствующий набор TabIndex.

ОтMSDN - Как: установить порядок вкладок в Windows Forms:

Additionally, by default, a GroupBox control has its own TabIndex value, which is a whole number. A GroupBox control itself cannot have focus at run time. Thus, each control within a GroupBox has its own decimal TabIndex value, beginning with .0. Naturally, as the TabIndex of a GroupBox control is incremented, the controls within it will be incremented accordingly. If you changed a TabIndex value from 5 to 6, the TabIndex value of the first control in its group automatically changes to 6.0, and so on

Кроме того, убедитесь, чтоTabStop собственность вашего GroupBoxflag не установлен в ложь. Я считаю, что по умолчанию используется значение false.

ЗаSystem.Windows.Controls GroupBox:

Убедитесь, чтоGroupBox.IsTabStop свойство установлено. Это также по умолчанию ложно.

Update: It appears that all of your controls are being added to groupBox3. You should make sure that each of them is being added only to its containing groupbox. For example, checkBox1, checkBox2, and checkBox3 should all be added to flag, which itself should be added to groupBox1. groupBox3 should only contain Back, Next, Finish, and Cancel.

Хорошо. Может быть, флажок только для мыши, а не нажатия клавиш?
Ваши флажки должны иметьTabStop (или жеIsTabStop) по умолчанию верно. Я все еще думаю, что проблема в вашемflag GroupBox не имеет своегоTabStop свойство правильно установлено.
Для GroupBox нет свойства TabStop.
Я обновил свой ответ, чтобы включить свойства для обоихSystem.Windows.Controls.GroupBox а такжеSystem.Windows.Forms.GroupBox, Мой первоначальный ответ был основан на предположении, что вы используете Forms GroupBox, что может объяснить, почему я обнаружил свойство TabStop, а вы - нет.
Проверьте ссылку. В частности, это относится к статье MSDN для свойства GroupBox.TabStop. Кроме того, я протестировал создание нового GroupBox и убедился, что а) свойство существует и б) оно по умолчанию имеет значение false.
1

Я обнаружил, что единственный способ получить порядок вкладок в групповых полях WinForms - это изменить порядок, в котором элементы управления добавляются в групповые блоки в сгенерированном методе InitializeControl.

Если у вас есть несколько групповых блоков, вам нужно будет проверить порядок добавления групповых блоков в их контейнер и, возможно, изменить его.

Мне действительно не нравится редактировать сгенерированный код, но, насколько я понимаю, это единственный способ исправить это.

Установка свойства TabStop группового окна не помогла вообще.

Похожие вопросы