2017-02-03 48 views
0

由於某些原因,即使它在最上方和Activate()打開,我的表單也不總是獲得焦點。和Focus();和BringToFront();都叫。如何專注於表單C#

程序和源代碼: sites.google.com/site/windowsprogramfortranslation/

我添加了所有的這些無處不在,仍是形式和谷歌的文本轉換不會被選中

void FormMain_Shown(object sender, EventArgs e) 
{ 
    BringToFront(); 
    webBrowserMain.Focus(); 
    panelMain.Enabled = false; 
    Focus(); 
    panelMain.Enabled = true; 
    Activate(); 
    webBrowserMain.Select(); 
    webBrowserMain.Focus(); 
} 

void webBrowserMain_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) 
{ 
    if (webBrowserMain.ReadyState == WebBrowserReadyState.Complete) 
    { 
     this.Activate(); 
     webBrowserMain.Select(); 
     webBrowserMain.Focus(); 

     int numOfTries = 0; 
     repeat: 
     if (numOfTries < 10) 
     { 
      try 
      { 
       webBrowserMain.Document.Window.ScrollTo(0, 0); 
       webBrowserMain.Document.GetElementById("source").Focus(); 
       //webBrowserMain.Document.GetElementById("source").InvokeMember("click"); 
      } 
      catch 
      {//if the document hasn't loaded yet 
       numOfTries++; 
       System.Threading.Thread.Sleep(40); 
       goto repeat; 
      } 
     } 
    } 
} 

public static void openTranslateWindow() 
{ 
    formMain.Show(); 
    formMain.TopMost = true; 
    formMain.WindowState = FormWindowState.Minimized; 
    formMain.Show(); 
    formMain.WindowState = FormWindowState.Normal; 
    formMain.BringToFront(); 

    formMain.webBrowserMain.Focus(); 

    formMain.panelMain.Enabled = false; 
    formMain.Focus(); 
    formMain.panelMain.Enabled = true; 
    formMain.Activate(); 
    formMain.webBrowserMain.Select(); 
    formMain.webBrowserMain.Focus(); 
} 
+1

'goto'而不是'while'循環,那肯定是一些可愛的代碼! – TheLethalCoder

+0

所以你的表單有一個WebBrowser控件,並且你正試圖在它正在加載的網站上選擇一個文本框? – gunnerone

+0

是的,我試圖選擇我的web瀏覽器中的文本框,它並不總是被選中..請檢查我的webstite中的源代碼。 – John1990

回答

1

嘗試在顯示主窗體時設置文本框焦點,而不是文檔完成時。

private void FormMain_Shown(object sender, EventArgs e) 
{ 
    BringToFront(); 
    HtmlElement textArea = webBrowserMain.Document.GetElementById("source"); 
    if (textArea != null) 
    { 
     textArea.Focus(); 
    } 
} 
+0

似乎它已經奏效......感謝你! – John1990