首页 > 解决方案 > 在 C# 中使用方法在文本框中读取/写入值

问题描述

我有form1class1。我想使用一种方法在 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"

很抱歉这个问题很混乱,因为问的问题不好。

标签: c#

解决方案


对于 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";

澄清

Findcall和其他方法之间的区别在于,如果您Textbox被埋在 aPanel或其他SubControls中,其他方法将找不到它。除此之外,它们完全相同。Find适用于第二个参数标志,我可以选择搜索子控件

searchAllChildren

true 搜索所有子控件;否则为假。


推荐阅读