c# - 在 C# 中使用方法在文本框中读取/写入值
问题描述
我有form1和class1。我想使用一种方法在 class1 的 form1 中的文本框中读取/写入文本。这是程序的一部分。我目前能够在这两者之间进行交互。唯一的问题是我不知道如何将字符串转换为可以读取的形式。
在表格1 中:
public string readTxt(string txtbox_name)
{
string txtbox_val;
txtbox_val = (txtbox_name).Text; //problem here
return txtbox_val;
}
public void writeTxt(string txtbox_name,string txtbox_val)
{
(txtbox_name).Text = txtbox_val; //problem here
}
例如,我需要在 textbox1 中读取/写入值。
在类1 中:
string text1 = (readTxt(textbox1)); //for get the text in textbox1
string text2 = "Hello"
writeTxt(textbox1,text2); //for overwrite the text in textbox1 to "Hello"
很抱歉这个问题很混乱,因为问的问题不好。
解决方案
对于 winforms,您可以使用Control.ControlCollection.Find(String, Boolean)
按其 Name 属性搜索控件并构建一个包含所有匹配控件的数组。
和Enumerable.OfType(IEnumerable)
根据指定类型过滤 IEnumerable 的元素。
public string ReadText(string txtbox_name)
{
// insert false if you expect not to be in a sub control
return Controls.Find(txtbox_name,true)
.OfType<TextBox>()
.FirstOrDefault()?.Text
}
但是我担心你的问题实际上是,我怎样才能从我的 TextBox 中获取文本。
var text = MyControl.Text;
更新
如果我想写入文本框怎么样。
var textBox = Controls.Find(txtbox_name,true)
.OfType<TextBox>()
.FirstOrDefault();
if(textBox != null)
textBox.Text = "yehaa";
澄清
Find
call和其他方法之间的区别在于,如果您Textbox
被埋在 aPanel
或其他SubControls中,其他方法将找不到它。除此之外,它们完全相同。Find
适用于第二个参数标志,我可以选择搜索子控件
searchAllChildren
true 搜索所有子控件;否则为假。
推荐阅读
- powerbi - 如何分析调查以了解对一个问题的回答如何影响休息
- aws-lambda - Lambda(与 Kinesis Data Stream 连接)函数连续生成 cloudwatch 日志
- postgresql - 无法识别的 JPA persistence.xml XSD 版本:``-hibernate、java ee 和 postgresql
- javascript - Turf JS 无法正确创建对象
- amazon-web-services - Wildfly 17.0.0.1.Final 在 AWS 上的控制台不起作用
- java - Java中JToggle选定状态的滑动抽屉动画?
- java - 如何更改未选中的 JList 项目的背景颜色?
- c# - 通过wine从python调用C# DLL方法
- java - 如何将参数传递给 selenium 中的页面工厂方法以获取特定的搜索结果?
- mysql - 如何使用hibernate + Spring编写更新查询