2008-09-18 12 views
7

私は、テキストボックス、コンボボックス、データグリッドビューなどのコントロールを持つwindowsフォームアプリケーションを持っています。 これらのコントロールは、ユーザーがクリップボードを使用することを可能にします。また、クリップボードに関係のないテキストを削除することもできます。Cut/Copy/Pasteメニューとツールバー項目を一般的な方法で有効/無効にするにはどうすればよいですか?

私のアプリケーションには、カット/コピー/ペースト/削除アイテムを含む編集アイテムとこれらのアイテムを含むツールバーがあります。フォーカスを持つコントロールの状態に応じて、これらのアイテムを適切に有効/無効にするにはどうすればよいですか?

一般的な方法を探しています。つまり、私は一度行う実装を探し、アプリケーションで使用するコントロールとは独立して将来的に再利用できます。

答えて

0

有効/無効グループごとにアレイを作成します。配列にコントロールを追加します(もちろん、ObjectやAnyなどの正しい型でなければなりません。使用しているプログラミング言語によって異なります)。 次に有効にするには、配列をループして無効にし、各コントロールの有効/無効のメソッドまたは関数を呼び出します。繰り返しますが、言語に応じて、キャストバックする必要があります。

3

Windowsフォームコントロールから切り取り/コピー/貼り付け情報を取得するための一般的なインターフェイスやメソッドはありません。

各コントロールの種類ごとにラッパークラスを作成することをお勧めします。次に、メニューの状態を更新する場合は、フォーカスを持つ現在のコントロールを取得し、適切なラッパーを作成します。次に、必要な状態情報をラッパーに尋ねます。そうすれば、使用するコントロールの種類ごとにラッパー実装を作成するだけで済みます。ちょっとした痛みで始まりますが、あなたが遭遇する新しいコントロールを追加するだけで済みます。

クリップボード情報は、クリップボードシングルトンにデータが入っていて、そのタイプが何であるかを尋ねることができるので、ずっと簡単です。その場合でも、ターゲットコントロールにその種の情報を受け入れることができるかどうかを尋ねる必要があり、余分な作業が必要になります。

関連する問題