0

TabControlのように動作するカスタムUIの「タブ」として使用しようとしているユーザーコントロールを作成しました。(「タブ」とは、クリックすると表示されるページのコンテンツではなく、クリックするビットを意味します)。タブは左側にあり (多くのアプリケーションのプロパティ ウィンドウと同様)、各タブ (本来) は上下に 2 つのラベル (タイトルと説明) で構成されます。

これはこれまでのところ長く困難な道のりであり、私のアプローチは完全に間違っている可能性がありますが、現在ユーザー コントロール内にあるのは 2 つのラベルと 1 つのボタンで、すべて TableLayoutPanel に配置されています。ボタンがあるのは、コントロールをタブストップにしたいからです。そのため、タブストップであるコントロールを含める必要があると思います。また、特定のキーストロークをトラップしたいと考えています (以下を参照)。画像を使用してボタンの見栄えを良くすることができるので、視覚的には、ボタンを使用してもそれほど問題はありません。

とにかく、ユーザーが上下の矢印キーを使用してタブを上下に移動できるようにしたい。ボタンの KeyDown (および PreviewKeyDown) イベントをキャッチすることで、これを機能させることができました。それは良い。

ただし、フォーカスがタブのユーザーコントロールにあるときにユーザーが Tab キーを押すと、フォーカスを次のタブのユーザーコントロールではなく、現在のページの最初のコントロールに移動する必要があります。これは実際に行うことです。

これを行うために、アクティブなタブ以外のすべてのタブのユーザーコントロールでボタンを無効にしようとしましたが、フォーカスはまだユーザーコントロール自体に移動します-アクティブなタブストップがないため、失われます(表示されません)。

次に、ボタンだけでなく、アクティブでないすべてのユーザーコントロールを無効にしようとしましたが、これはうまくいきました-ユーザーコントロールのラベルが無効として表示されていることを除いて、それは望ましくありません。

ユーザーコントロールの子コントロールが無効になっているように見えないようにするにはどうすればよいですか? (または、ユーザーコントロールを無効にせずにタブキーを無視するにはどうすればよいですか)?

4

1 に答える 1

0

ユーザーコントロールを無効にすることなく、やりたいことを達成できることがわかりました。代わりに、TabStopプロパティをfalseに設定するだけです。

于 2012-07-24T15:04:02.560 に答える