猿问

将字符串转换为控件类型

我可以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?


慕妹3242003
浏览 318回答 2
2回答

心有法竹

像这样的东西:string val = (this.Controls[viewIdentifier] as TextBox)?.Text;这里我们用它的名字Control在里面寻找Controls——viewIdentifieras TextBox:尝试将控件转换为TextBox(null如果不是TextBox)?.Text如果转换成功,则获取Text(null否则)编辑如果需要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;  }

一只萌萌小番薯

string viewIdentifier= "MyControlName";var hasTextBoxWithThisName = this.Controls.OfType<TextBox>().Any(c => c.Name == viewIdentifier);编辑:var t = this.Controls.OfType<TextBox>()&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .SingleOrDefault(c => c.Name == viewIdentifier);if (t != null){&nbsp; &nbsp; &nbsp;var text = t.Text;}
随时随地看视频慕课网APP
我要回答