为了账号安全,请及时绑定邮箱和手机立即绑定

将字符串转换为控件类型

将字符串转换为控件类型

C#
慕妹3242003 2021-10-23 17:29:40
我可以Form像下面的代码一样找出当前是否存在具有某个名称的组件。if (!this.Controls.ContainsKey("MyControlName")){      //do anything}但我如何识别它是否是TextBox。我试过这个string viewIdentifier = "MyControlName";string val = null;if (viewIdentifier is Textbox){    val = viewidentifier.Text;}我如何转换MyControlName为Control类型string?
查看完整描述

2 回答

?
心有法竹

TA贡献1866条经验 获得超5个赞

像这样的东西:

string val = (this.Controls[viewIdentifier] as TextBox)?.Text;

这里

  1. 我们用它的名字Control在里面寻找Controls——viewIdentifier

  2. as TextBox:尝试将控件转换为TextBoxnull如果不是TextBox

  3. ?.Text如果转换成功,则获取Textnull否则)

编辑如果需要is(让我们修改当前代码),您可以使用模式匹配(C# 7.0)实现例程:

  string viewIdentifier = "MyControlName";

  string val = null;


  // viewIdentifier is String, when this.Controls[viewIdentifier] is Control

  // ... is TextBox textbox: if left side matches TextBox pattern

  // then textbox is a matched pattern to work with 

  if (this.Controls[viewIdentifier] is TextBox textbox) {

    val = textbox.Text;

  }


查看完整回答
反对 回复 2021-10-23
?
一只萌萌小番薯

TA贡献1795条经验 获得超7个赞

string viewIdentifier= "MyControlName";


var hasTextBoxWithThisName = this.Controls.OfType<TextBox>().Any(c => c.Name == viewIdentifier);

编辑:


var t = this.Controls.OfType<TextBox>()

            .SingleOrDefault(c => c.Name == viewIdentifier);

if (t != null)

{

     var text = t.Text;

}


查看完整回答
反对 回复 2021-10-23
  • 2 回答
  • 0 关注
  • 317 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信