0

TextBoxes と NumericUpDowns には、一度選択すると選択を解除できないという奇妙な特性があります。ユーザーが NumericUpDown を選択してフォームの別の場所をクリックすると、NumericUpDown の選択が解除されます。

残念ながら、そうではありません。現在、フォーム上の他のすべてのコントロール (パネルや実際のフォーム自体など) の MouseDown イベントを処理し、ランダム ラベルの Focus メソッドを呼び出して、NumericUpDown からフォーカスを削除しています。ただし、これはメニュー項目やスクロールバーには適用できません。

これを行うためのより良い方法があるはずです。ユーザーは、NumericUpDown の代わりにパネルをスクロールし、パネルを直感的にクリックしてからスクロール ホイールを使用したい場合がありますが、現在はまだフォーカスがあるため、代わりに NumericUpDown をスクロールします。

読んでくれてありがとう。

編集:問題はまだ解決されていません。

4

2 に答える 2

1

通常、パネル コントロールは非フォーカス コントロールです。したがって、パネルをクリックしても、TextBox または NumericUpDown Countr からフォーカスが取り除かれません。

回避策として、パネルにボタンを配置してビューから離すことができます。たとえば、x = -100 および y = -100 に設定します。visible = false に設定しないでください。

ユーザーがパネル (Panel_Click イベント) をクリックするたびに、フォーカス (Button.Focus()) をそのボタンに設定します。このようにして、パネルはスクロールホイールを介してスクロール可能になります。

于 2011-08-25T10:42:19.097 に答える
0

ある種のパネル内に数値ボックスを囲んでから、

panel1.MouseHover += new EventHandler(panel1_MouseHover);

private void panel1_MouseHover(object sender, EventArgs e)
        {
            if (numericUpDown1.Focused)
            {
                panel1.Focus();
            }
        }

私はそれをテストしました、そしてそれは働きます。

于 2011-08-25T04:54:21.130 に答える