1

この問題があります... フォームを開くと、ボタンがフォーカスされています。集中したくありません。目に見えない小さなパネルをフォームに置き、それを開始フォーカスとして設定します( も設定しますtabstop = false)。しかし、それでも... ボタンはフォーカスされています。

何が問題なのですか?

私は試した :

private void Form_Load(object sender, EventArgs e)
{
   panel.Focus();
}

しかし、まだ何も起こりません。ボタンはまだフォーカスされています。

4

5 に答える 5

3

Panel コントロールは ContainerControl から派生します。これは、他のコントロールのコンテナーとして機能するコントロールに共通の動作を提供します。これには、焦点を合わせたくないことも含まれます。それらにフォーカスを与えようとすると、すぐに子コントロールに渡されます。

これには十分な理由があります。ユーザーは、どのコントロールにフォーカスがあるかを確認できる必要があります。そのため、彼はキーボード ストロークがどこに行くかを知っています。コンテナー コントロールには、それを表示する方法がありません。また、キーストロークで合理的なことは何もしません。確かに Panel コントロールをドクターして、フォーカス可能なコントロールにすることができます。この回答はその方法を示しています。

ただし、ユーザーにとってそれを難し​​くしたい理由に少し焦点を当ててください。たぶん、フォーカス長方形の「傷」に少し集中していませんか? 本当に隠したい場合は、それを行うのは非常に簡単です。ダミー ボタンを追加し、負の Location プロパティと TabIndex を 0 に設定するだけです。これにより、ボタンがウィンドウの外に移動し、ユーザーには表示されなくなります。しかし、それでも焦点を合わせることができます。「傷」の問題は解決しますが、ユーザーをひどく混乱させるリスクがあります。

于 2013-05-29T12:13:08.937 に答える
1

コントロールの を変更してTabIndex、希望する順序でフォーカスされるようにすることができます

于 2013-05-29T11:27:58.997 に答える
0

フォームを開いたときにボタンがフォーカスされないようにする場合は、TabIndexプロパティを修正する必要があります。プロパティには、TabIndexタブ キーが押されたときにコントロールがフォーカスを取得する順序を指定する値として整数があります。コントロールがTabIndex0 に設定されている場合は、他の値に変更します。

または

コントロールTabStopプロパティを false に設定することもできます。

TabIndexおよびTabStopプロパティのドキュメント。

于 2013-05-29T11:34:26.773 に答える
0

プロパティ Named AcceptButtons of Form に設定します(none)

于 2013-05-29T11:34:55.380 に答える
0

あなたのパネルはフォーカスできないと思います。パネル内のコントロールを試してください。

于 2013-05-29T11:27:51.743 に答える