winforms 如何访问DataRepeater中的控件?

fdbelqdn  于 2023-11-21  发布在  其他
关注(0)|答案(2)|浏览(97)

我试图从C#中的DataRepeater控件获取值旧程序(用VB编写)使用以下指令完成此操作:

If CBool(e.DataRepeaterItem.Controls(Temp_S.Name).Text) = True Then
  e.DataRepeaterItem.Controls(T_S.Name).Text = "S"
  e.DataRepeaterItem.Controls(T_S.Name).BackColor = Color.Yellow
  e.DataRepeaterItem.Controls(T_S.Name).ForeColor = Color.Black
Else
  e.DataRepeaterItem.Controls(T_S.Name).BackColor = Color.White
  e.DataRepeaterItem.Controls(T_S.Name).ForeColor = Color.White
End If

字符串
我在C#中尝试了相同的指令,但没有结果。出现的错误是:
“不可调用的成员”Control.controls“不能用作方法。”
编辑:我找到了一个解决方案,但它仍然不工作,即使它不产生错误,非常奇怪,如果我把一个停止点内的分检查它的点是永远不会达到!它似乎是这个分永远不会达到!

private void DataRepeater_Buoni_DrawItem(object sender, Microsoft.VisualBasic.PowerPacks.DataRepeaterItemEventArgs e)
{
  // Accende S
  if (Convert.ToBoolean(e.DataRepeaterItem.Controls["t_Buono.Name"].Text = "10268"))
  {
    e.DataRepeaterItem.Controls["t_S.Name"].Text = "S";
    e.DataRepeaterItem.Controls["t_S.Name"].BackColor = Color.Yellow;
    e.DataRepeaterItem.Controls["t_S.Name"].ForeColor = Color.Black;
  }
  else
  {
    e.DataRepeaterItem.Controls[t_S.Name].BackColor = Color.White;
    e.DataRepeaterItem.Controls[t_S.Name].ForeColor = Color.White;
  }
}

ac1kyiln

ac1kyiln1#

试试这个:(e.DataRepeaterItem.Controls[Temp_S.Name] as Control).Text
修改代码:

// Change TextBox to the actual type of your control
var control = e.DataRepeaterItem.Controls[Temp_S.Name] as TextBox; 
if (control != null)
{
    string textValue = control.Text;
}

字符串

643ylb08

643ylb082#

终于成功了!

if (e.DataRepeaterItem.Controls["temp_S"].Text == "True")

字符串
问题出在.Name和文本框名称的连接上。谢谢大家的支持!

相关问题