ホームページ  >  記事  >  バックエンド開発  >  FormDragger が C# でフォーム ドラッガーを実装する方法の詳細な説明

FormDragger が C# でフォーム ドラッガーを実装する方法の詳細な説明

Y2J
Y2Jオリジナル
2017-04-22 10:33:381594ブラウズ

この記事では主に C# コンポーネント FormDragger について詳しく紹介します。興味のある方は参考にしてください

対象: .net2.0+ winform プロジェクト

概要:

UI を重視したソフトウェア。 QQ や Thunder などのエクスペリエンスでは、上部のタイトル バーに移動しなくても、ウィンドウ内の複数の場所でウィンドウをドラッグできます。このコンポーネントを使用すると、カジュアルに、またはさらに悪いことに、Winform をドラッグできます。まず効果を見てみましょう:

FormDragger が C# でフォーム ドラッガーを実装する方法の詳細な説明

ドラッグできる場所には以下が含まれますが、これらに限定されません:

  • フォーム、パネル、GroupBox、TabControl などのコンテナ コントロールの空白領域。

  • メニューバー、ツールバー、ステータスバーなど。バーの空白領域、および無効な項目。

  • Label、PictureBox、ProgressBar、および通常はマウスと対話しないその他のコントロール。

  • すべての無効なコントロール (Enabled は false);

基本的には、あなたが考えているとおり、どこにでも牽引できます。

使用法:

パブリックメンバーの初見:

//拖拽器开关
bool Enabled { get; set; }
//排除列表。可向其中添加或移除控件实例,处于列表中的控件不接受拖拽
List<Control> ExcludeControls { get; }
//事件:准备拖拽时发生,可用e.Cancel = true取消拖拽,e还携带其它信息
event EventHandler<FormDraggingCancelEventArgs> Dragging;
//事件:拖拽器开关状态改变后
event EventHandler EnabledChanged;

いつでもどこでも使い方はとても簡単ですFormDragger.Enabled = true/falseドラッグアンドドロップのオンとオフを切り替えることができますたとえば、Main 関数でこの機能をオンにすることができます。プログラム内ですべての自作フォームを作成したら、それらをドラッグ アンド ドロップできます。ただし、メッセージ ボックスやさまざまなシステムによって提供されるフォームも同様です。ダイアログ ボックス (ファイルを開くダイアログ ボックスなど) はドラッグできません。これらをドラッグするにはフックは必要ありません (実際には、システム ダイアログ ボックスのドラッグに使用される DialogDragger.cs がプランに実装されています)。カラー選択ダイアログボックスのColorDialogに問題があることが知られているため、当面は統合されていません。必要に応じて後で更新します。監視することをお勧めします。メッセージボックスについては、自作なのでドラッグして選択することも可能です。

ドラッグ アンド ドロップ ルールを適用するコントロールの場合、マウスの左ボタン クリック メッセージ (MouseDown など) はそれに到達できません。 特定のイベントが必要な場合、そのようなイベントを登録してもトリガーされません。ドラッグ コントロールをピクチャ ボックスなどにドラッグしないで、「ハイパーリンク」の機能を持たせ、クリックしたときに登録された MouseDown イベント処理メソッドを実行する場合、例外を発生させる方法は 2 つあります:

1. コントロールが例外リストに追加されます: FormDragger.ExcludeControls.Add(pictureBox1);//ここで受け入れられるのはコントロールの種類ではなく、コントロールのインスタンスであることに注意してください。
2. FormDragger.Dragging イベントを登録します。イベント処理メソッドでは、受信する e is A Control プロパティはクリックされたコントロールを表すため、e.Control が例外を作成するコントロールであるかどうかを判断できます。そうである場合は、さらに e.Cancel = true を設定します。マウスの位置、座標タイプなどのその他の情報が含まれています。判断を助けるため、上記のシナリオには参考用のソース コードの例が含まれています。

原則:

Application.AddMessageFilter を使用してプログラムにメッセージ フィルターを追加し、プログラム フォームに送信された左クリック メッセージをインターセプトして処理し、ロジックが満たされた場合はメッセージをブロックして、コントロール フォームはタイトル バーのクリック メッセージを送信するため、コントロールがクリックされると、システムはそれがフォームのタイトル バーのクリックであると認識します。加工の詳細については下記アドレスをご覧ください。

解決策は次のとおりです:

github.com/ahdung/FormDraggerDemo [優先]

coding.net/u/ahdung/p/FormDraggerDemo/git

git.oschina.net/ahdung/FormDraggerDemo

テスターは書かれていますソリューションでは、スクリーンショットのように、ダウンロードして体験してください。

以上がFormDragger が C# でフォーム ドラッガーを実装する方法の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。