どのように私は、Windowsフォーム上のhittestsを無効にすることができますか?
質問
これは、Windowsフォームのウィンドウ上で最もホットなを無効にすることが可能であり、そうであれば、私はそれをどのように行うのですか?私はクリックできません不透明なウィンドウを持っていると思います。事前に感謝し、 クリストフ
解決
あなたが別のプロセスに話している場合は、Windowsのメッセージを送信して取得する必要があります。
このリンクを見てください。
C#でグローバルシステムフックを実装するためにウィンドウメッセージを使用 http://www.codeproject.com/KB/system/WilsonSystemGlobalHooks.aspx
グローバルシステムフックは、アプリケーションが他のアプリケーションを対象とし、Windowsのメッセージを傍受することができます。これは、常にC#で実装する(不可能、MSDNによる)ことは困難でした。この記事では、フックアプリケーションのメッセージキューにポストメッセージというC ++でDLLラッパーを作成することにより、グローバルなシステムフックを実装しようとします。
他のヒント
あなたが移動することはできませんウィンドウをしたいですか? noneにFormBorderStyleを設定します。
まあ、私はまだあなたのユースケースについてあまり知らないが、私はとにかく刺しを取り、簡単な例を提供します。
私はあなたの浮動フォームからメインフォーム上で何かを制御することを前提としています。 これを行うには、あなたは、フローティングフォームからメインフォームへの参照が必要です。あなたはこのように、メインフォームのインスタンスを受け入れ、あなたの浮動形式のコンストラクタのオーバーロードを作成することによってこれを行います:
public FloatingForm(MainForm mainForm)
{
InitializeComponent();
_mainForm = mainForm;
}
浮動形式はfloatingFormTextBoxという名前のテキストボックス、およびボタン1という名前のボタンが含まれています。浮動フォームの部分クラスは次のようになります:
public partial class FloatingForm : Form
{
MainForm _mainForm;
public FloatingForm()
{
InitializeComponent();
}
public FloatingForm(MainForm mainForm)
{
InitializeComponent();
_mainForm = mainForm;
}
private void button1_Click(object sender, EventArgs e)
{
_mainForm.DoSomething(floatingFormTextBox.Text);
}
}
メインフォームはただmainFormTextBoxという名前のテキストボックスが含まれています。ときにメインフォーム負荷は、それがフローティングフォームの新しいコンストラクタのオーバーロードに自分自身への参照を渡し、フローティング形式のインスタンスを作成します。メインフォームの部分クラスは次のようになります:
public partial class MainForm : Form
{
FloatingForm _floatingForm;
public MainForm()
{
InitializeComponent();
}
public void DoSomething(string text)
{
mainFormTextBox.Text = text;
this.Refresh();
}
private void MainForm_Load(object sender, EventArgs e)
{
_floatingForm = new FloatingForm(this);
_floatingForm.Show();
}
}
私は、フローティング形式のテキストボックスにテキストを入れて、ボタンをクリックすると、さて、テキストは、メインフォームのテキストボックスに表示されます。