[英]Modeless form doesn't receive the input focus
我有一個Windows窗體(“ form1”),該窗體在調用Application.Run()
之前(在不使用該窗體作為參數的情況下Application.Run()
在Application.Run()
程序的主線程中用ShowDialog()
打開。 從主線程創建另一個線程(“ thread2”),該線程與主線程並行運行。 按下“ form1”中的按鈕,將在“ thread2”中創建另一個表單(“ form2”),並使用Show()
方法Show()
。 問題:“ form2”無法獲得輸入焦點,並且無法接收鍵盤或鼠標輸入。
form2的創建如下:
public form2( )
{
InitializeComponent();
this.WindowState = FormWindowState.Normal;
this.TopMost = true;
this.SetStyle( ControlStyles.Selectable, true );
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
this.Bounds = Screen.PrimaryScreen.Bounds;
}
我在OnFocusLosing事件上創建了一個處理程序,該處理程序將一個字符串寫入控制台,然后看到form2在創建后就失去了焦點。 是用ShowDialog()
打開並在主線程中運行的form1可以吸引焦點嗎? 我試圖在創建form2之前最小化form1,但這沒有幫助。
如何獲得一種形式來接收輸入焦點?
據我所知,Windows Forms應用程序中只有一個UI線程,您不能只是衍生出線程並期望用戶能夠與之交互。
如果您確實需要兩個獨立的UI線程,則可以嘗試以下方法: https : //social.msdn.microsoft.com/Forums/zh-CN/3f0e7794-8671-47c4-aa9a-3bd1f85c9963/how-to-create-a-winform -app與-雙UI線程
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.