回答
如果您正在與另一個進程通話,則需要發送和檢索Windows消息。
看一看這個鏈接:
使用窗口消息來實現全球系統鉤子在C# http://www.codeproject.com/KB/system/WilsonSystemGlobalHooks.aspx
全球系統鉤子允許應用程序攔截用於其他應用程序的Windows消息。這一直是困難的(根據MSDN,不可能)在C#中實現。本文試圖通過在C++中創建一個DLL封裝器來實現全局系統掛鉤,該封裝器將消息發佈到掛鉤應用程序的消息隊列中。
你想的是不能移動的窗口?將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();
}
}
現在,當我把一些文字到浮動窗體的文本框,然後點擊按鈕,文本在主窗體的文本框中顯示出來。
感謝您的回覆。讓我補充一些關於用例的細節:對於我來說,這兩個表單生活在兩個獨立的進程中是非常重要的 - 僅僅有兩種形式是不夠的,並且只有兩個消息泵(兩次應用程序)是不夠的。 Run()在不同的線程中,後臺的窗體應該處理所有的事件,前面的浮動窗體(在一個單獨的進程中)只是一個疊加層,它不應該處理任何鼠標事件 - 它必須讓它通過背景窗體 – Christoph 2009-05-30 21:07:55
覆蓋層的目的是什麼?隔離度? – 2009-05-30 21:14:45
- 1. 如何禁用更新Windows窗體中的窗體?
- 2. 如何在Windows窗體上使用MetroFramework
- 3. Windows窗體:啓用/禁用WS_CLIPCHILDREN
- 4. 如何禁用DataGridView中的複選框列 - Windows窗體?
- 5. 禁用Windows窗體關閉按鈕
- 6. 禁用調整Windows窗體大小
- 7. 禁用用戶窗體上的按鈕
- 8. Windows窗體 - 如何從父窗體
- 9. 如何使用rails 3禁用窗體上的所有元素?
- 10. 在Windows窗體上禁用最大化/恢復按鈕
- 11. 在Windows窗體上禁用所有事件
- 12. Windows窗體:如何更改已禁用標籤的字體顏色
- 13. 如何禁用窗口邊緣上的緩存在Windows Phone 10
- 14. 如何禁用Windows上的Perl/Tk窗口關閉('X')按鈕
- 15. 如何禁用子窗體控件?
- 16. 如何在顯示彈出式窗體時禁用窗體?
- 17. 如何在Windows窗體
- 18. 如何在Windows窗體
- 19. 如何重置Windows窗體?
- 20. 如何打印Windows窗體
- 21. 如何在Windows窗體
- 22. 如何在MDI父窗體中激活子窗體時禁用父窗體?
- 23. 如何在無窗口的Windows窗體上獲取Aero Glass?
- 24. Windows窗體上的TextBased應用程序
- 25. SignalR - 驗證Windows窗體服務器上的窗體用戶
- 26. Ax 2012在窗體上禁用行
- 27. 禁用窗體上升到頂部
- 28. 如何禁用Windows Phone上的按鈕
- 29. 如何禁用Windows上Bash的鈴聲?
- 30. 如何使用Windows窗體更改按鈕上的圖像?
是的,它不應該可以移動窗口,並且已經將FormBorderStyle設置爲none。但是,另外,我希望鼠標點擊傳播到下面的窗口,我。即我希望窗口不要消耗事件。 – Christoph 2009-05-30 17:16:59