[英]How can I disable hittests on a Windows Form?
是否可以在Windows窗體窗口上禁用Hittest,如果是這樣,我該怎么做? 我想要一個不透明的窗口,無法單擊。
在此先感謝Christoph
您是否想要一個無法移動的窗口? 將FormBorderStyle設置為none。
好吧,我仍然對您的用例了解不多,但是無論如何我都會采取行動,並提供一個簡單的示例。
我假設您想從浮動表單中控制主表單上的某些內容。 為此,您需要從浮動表單中引用主表單。 為此,您可以在浮動表單中創建一個構造函數重載來接受您的主表單實例,如下所示:
public FloatingForm(MainForm mainForm)
{
InitializeComponent();
_mainForm = mainForm;
}
浮動表單包含一個名為floatingFormTextBox的文本框和一個名為Button1的按鈕。 浮動形式的局部類如下所示:
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();
}
}
現在,當我將一些文本放入浮動表單的文本框中並單擊按鈕時,文本將顯示在主表單的文本框中。
如果您正在討論其他過程,則需要發送和檢索Windows消息。
看一下這個鏈接:
使用窗口消息在C#中實現全局系統掛鈎http://www.codeproject.com/KB/system/WilsonSystemGlobalHooks.aspx
全局系統掛鈎允許應用程序攔截旨在發送給其他應用程序的Windows消息。 一直很難(根據MSDN不可能)在C#中實現。 本文試圖通過在C ++中創建一個DLL包裝器來實現全局系統掛鈎,該DLL包裝器將消息發布到掛鈎應用程序的消息隊列中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.