2017-02-03 113 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