2016-12-28 108 views
-2

我试图实现的是每次单击按钮时,它都会从Web浏览器获取一个值并将其放入文本框中。我知道如何为2台印刷机做到这一点,但我希望能够做多达20C#每次点击按钮时使用不同的文本框或替代

使用if语句,这是我有:

if (string.IsNullOrEmpty(Token1.Text)) 
{ 
    Token1.Text = CaptchaWeb.Document.GetElementById("gcaptcha").GetAttribute("value"); 
} 
else 
{ 
    Token2.Text = CaptchaWeb.Document.GetElementById("gcaptcha").GetAttribute("value"); 
} 

现在我想使它所以当文本框1和文本框2都具有文本使用文本框3等等,或者只是在第一次按下按钮时使用文本框1,然后下次使用文本框2.

所有令牌都是唯一的,所以当前文本框不能被覆盖。 20个不同的代码必须存储在单独的文本框中。

+0

就是你得到的保证是唯一的随机代码? –

+0

假设令牌1和令牌2是文本框,我将使用列表令牌列表和每个按钮按下列表中添加一个新的文本框, –

回答

0

你可以试试这个:

A-列出所有的控件

B-选择是TextBox类型的控制,从以前的列表(A)

C-挑头空文本框(如果有的话),从以前的列表(B)

D-写您的令牌文本在该文本框(C)

var listOfAllControls = Controls.Cast<Control>(); 
var listOfTextBoxes= listOfAllControls.Where(control =>control.GetType()==typeof(TextBox)); 
TextBox emptyTextBox = (TextBox)listOfTextBoxes.FirstOrDefault(textbox => String.IsNullOrEmpty(textbox.Text)); 
if (emptyTextBox != null) 
emptyTextBox.Text = CaptchaWeb.Document.GetElementById("gcaptcha").GetAttribute("value"); 
+0

谢谢你的作品。我唯一的问题是,它只能在选项卡控件之外工作。我怎样才能在我的选项卡控件中完成这项工作? – Andre

+0

TabPage page = aTabControl.SelectedTab; var listOfAllControls = page.Controls.Cast (); –

0

使用20个字符串和一个计数器的数组来知道在阵列中添加新元素的位置。既然你把所有你的价值观数组中,你可以那么就这样做:

myArry[counter] = GaptchaWeb.Document.GetElementById("gcaptcha").GetAttribute("value"); 
counter++; 
Token0.Text = myArry[0]; 
Token1.Text = myArray[1]; 
... 
TokenX.Text = myArray[X]; 

希望帮助

相关问题