3

いくつかのテキストボックスとボタンを含むフォームの子パネルがあります。ユーザーが1つのコントロールから次のコントロールにタブで移動できるように、これらのコントロールのtabstopプロパティとtabindexプロパティを設定してみました。しかし、何らかの理由でタブが機能しないため、タブキーを押したときにフォーカスがある同じフィールドにキュラーが留まります。.Net 3.5フレームワークでC#を使用しています。以下は私のコードがどのように見えるかです-

  rightPanel.Controls.Clear();
        marketMessageLabel = new Label();
        marketMessageLabel.Location = new Point(0, 20);            
        marketMessageLabel.AutoSize = false;
        marketMessageLabel.Size = new Size(rightPanel.Width, 42);
        marketMessageLabel.BackColor = Color.White;            
        marketMessageLabel.Font = new System.Drawing.Font("Verdana", 8.00F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
        rightPanel.Controls.Add(marketMessageLabel);                        

        signinUserNameLabel = new Label();
        signinUserNameLabel.Location = new Point(0, 150);
        signinUserNameLabel.Size = new Size(60, 14);
        signinUserNameLabel.BackColor = Color.White;
        signinUserNameLabel.Text = "User Name";            
        signinUserNameLabel.Font = new System.Drawing.Font("Verdana", 9.00F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
        rightPanel.Controls.Add(signinUserNameLabel);

        signinUserNameTextBox = new TextBox();
        signinUserNameTextBox.Location = new Point(0, 170);
        signinUserNameTextBox.Width = this.Width - 80;
        signinUserNameTextBox.Font = new System.Drawing.Font("Verdana", 9.00F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));         
        signinUserNameTextBox.TabIndex = 0;
        signinUserNameTextBox.TabStop = true;

        rightPanel.Controls.Add(signinUserNameTextBox);

        signinPasswordLabel = new Label();
        signinPasswordLabel.Location = new Point(0, 192);
        signinPasswordLabel.Size = new Size(100, 14);
        signinPasswordLabel.Font = new System.Drawing.Font("Verdana", 9.00F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
        signinPasswordLabel.BackColor = Color.White;
        signinPasswordLabel.Text = "Password";            
        rightPanel.Controls.Add(signinPasswordLabel);                      

        signinPasswordTextBox = new TextBox();
        signinPasswordTextBox.Location = new Point(0, 210);
        signinPasswordTextBox.Width = this.Width - 80;            
        signinPasswordTextBox.PasswordChar = '*';
        signinPasswordTextBox.TabIndex = 1;
        signinPasswordTextBox.TabStop = true;
        rightPanel.Controls.Add(signinPasswordTextBox);

        signInButton = new Button();
        signInButton.Text = "Sign In";
        signInButton.Font = new System.Drawing.Font("Verdana", 9.00F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
        signInButton.Width = 70;            
        signInButton.BackColor = Color.White;
        signInButton.Location = new Point(0,240);
        signInButton.Click += new EventHandler(signInButton_Click);
        signInButton.TabIndex = 2;
        signInButton.TabStop = true;
        rightPanel.Controls.Add(signInButton);
4

4 に答える 4

5

もう 1 つの考えられる問題は、「タブ」が機能しないフォームが、モーダルに表示されないフォーム上にある場合です。

何らかの理由で、子フォームが で表示されている場合、「タブ移動」が機能しないことがあり.show、フォームを で表示したい場合があります.ShowDialog

于 2012-06-27T14:48:55.823 に答える
2

フォームがモードレス (.Show() で表示) の場合、次のコードを追加して keyDown イベントを処理する必要があります。

    private void YourForm_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.KeyCode == Keys.Tab)
        {
            if (e.Modifiers == Keys.Shift)
                this.ProcessTabKey(false);
            else
                this.ProcessTabKey(true);
        }
    }

KeyPreview プロパティを True に設定する必要もあります。

于 2016-04-14T12:35:44.040 に答える
1

解決策は、パネルで TabStop = true を設定することです。

ちょっとしたテストを実行したところ、パネルの外側にフォーカス可能なコントロールが他にない場合、winforms は子パネルにタブ移動しないようです。

実際にパネルに「上に」タブで移動することはありませんが、表示されているこの問題を回避し、最初の子コントロールにタブで移動します。

于 2010-01-25T16:28:35.433 に答える
0

フォーカス可能ではありませんが、ラベルにも tabindex を設定してください。

VS デザイナー ウィンドウから、画面上のフォームをさらにデザインして、をクリックします。

  • メニューを見る
  • タブ オーダー メニュー オプション

ポイント アンド クリックして、コントロール (ラベルを含む) の順序を設定します。

これがお役に立てば幸いです。よろしくお願いします、トム。

于 2010-01-25T16:00:46.390 に答える