【发布时间】:2017-02-04 00:41:57
【问题描述】:
由于某种原因,即使它在最顶层打开并激活(),我的表单也不总是获得焦点;和焦点();和BringToFront();都被调用了。
程序和源代码: 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();
}
【问题讨论】:
-
goto而不是while循环,这确实是一些可爱的代码! -
所以您的表单有一个 WebBrowser 控件,而您正试图在它正在加载的网站上选择一个文本框?
-
是的,我正在尝试在我的网络浏览器中选择文本框,但它并不总是被选中。请在我的网站中查看我的源代码。
-
@user3806409 如果您希望有人帮助您,您应该在问题本身中包含所有代码,请参阅minimal reproducible example
-
@John1990 没有人会下载您的程序来为您完成工作。如果您需要帮助,则需要以minimal reproducible example 的形式出现在问题中。如果你不能提供一个,那么问题是太宽泛了,应该被关闭。