プロジェクトにコード完了ポップアップウィンドウを実装しようとしています。ウィンドウはフォームから派生しています。これには、UserControlから派生したカスタムリスト(アイコンで完了の可能性を示します)とVScrollBarの2つのコントロールが含まれています。
ポップアップが表示されても、エディターからフォーカスが奪われることはなく(フォームのShowWithoutActivationがオーバーライドされてtrueが返されます)、エディターは特定のキーストロークをポップアップに送信して、ユーザーがキーボードを使用してポップアップを操作できるようにします。これまでのところ、それは魅力のように機能します。
問題は、ユーザーにもマウスを使用できるようにしたいということです。ただし、ユーザーがポップアップウィンドウをクリックすると、そのフォームがアクティブになり、エディターからフォーカスが奪われます。エディターにフォーカスを戻すことでこれに対応できます。これを定期的に実行するタイマーを設定しましたが、解決策が不十分であることを除けば、これが発生するとエディターのタイトルバーが常にちらつきます(ポップアップがクリック)。
フォームをアクティブにしないポップアップフォームを(マウスを使用して)操作する方法はありますか?
ShowWithoutActivationのドキュメントには、「非アクティブ化されたウィンドウでUIコントロールを使用する必要がある場合は、ToolStripDropDownなどのToolStripコントロールの使用を検討する必要があります。これらのコントロールはウィンドウがなく、選択されたときにウィンドウがアクティブ化されることはありません。」これは私が必要としているものとまったく同じように見えますが、カスタムコントロールとスクロールバーを使用したいと思います。
同じ問題は、メソッドのオーバーロード(VSから知られている)を切り替えるためにこれらの2つの矢印を表示するツールチップにもあります-フォーム全体はコントロールをまったく使用しません(テキストと矢印のみをレンダリングします)が、クリックしてもアクティブにはなりません。問題は、「アクティブ化されないが、ユーザーが内部のcertailコントロールを操作できるようにするフォームを作成する方法」に要約できます。
ありがとう。