c# - 如何将 foreach 用于面板中的文本框

标签 c# textbox

我在设计时创建了 9 个文本框。通过单击列表框(在设计时创建的列表)我选择一个项目,IfThisExist(CmpStr) 函数验证我是否已经选择了这个项目。当我调试时,CmpStr 的值被传递给 txt.Text,但它没有显示在屏幕上。

string CmpString;
bool SelectedExist;
CmpSt r = Convert.ToString(inglist.Items[inglist.SelectedIndex]);
SelectedExist = IfThisExist(CmpStr);

if (inglist.SelectedIndex > -1 && rows > 0 && SelectedExist == false)
{
  foreach (Control txt in mypanel.Controls)
  {
    if (txt is TextBox && txt.Text == "" )
    {
      txt.Text = CmpStr;
      break;
    }
    else if (txt is TextBox && txt.Text == CmpStr)
        break;
  }

如果我用下面的方法做同样的事情,它就起作用了。

//for (int j = 0; j < rows; ++j)
//{
//   switch (j + 1)
//{
//  case 1:
//    if (textBox1.Text == "" && textBox1.Text!= CmpStr) 
//  {
//    textBox1.Text = CmpStr;
//  passed = true;
//   }
//  break;

.....

可能是什么原因?

最佳答案

抱歉打扰了,foreach 循环从较大的 tabindex 开始到较低的。因为我隐藏了未使用的文本框,所以这是更大的 tabindex 文本框,它正在接收 CmpStr 的值。

if (inglist.SelectedIndex > -1 && rows > 0 && SelectedExist == false)
{
            
    foreach (Control txt in mypanel.Controls.Cast<Control>().OrderBy(c => c.TabIndex))
    {
        if (txt is TextBox && txt.Text == "")
        {
            txt.Text = CmpStr;
            break;
        }
        else if (txt is TextBox && txt.Text == CmpStr)
            break;
    }
}

    

而且效果很好。

关于c# - 如何将 foreach 用于面板中的文本框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18895864/

相关文章:

css - 样式不可编辑的输入复选框和文本框

javascript - 如何让文本框排除通过 JavaScript 添加的文本(Twitch 电视聊天)

vb.net - 文本框中的当前关键位置

c# - 设置文本框线程问题

c# - 验证仅用于数字输入的文本框字段。

c# - Java Android 监听器

c# - 如何获取 LAST_INSERT_ID();

c# - ASP.NET 中的安全设置问题

c# - Postman 文件和 json 即使使用 Content-Type header 也会返回 415 .net core

c# - 如何动态创建Sharepoint ComboBox?