C# 有没有办法将变量用作 属性?
C# Is there a way to use a variable AS a property?
我想使用一个变量,这里我使用TextName作为变量。
然后将其用作 属性。当然我不能,因为它是一个字符串,但是我如何才能将 variable/string 视为它所持有的字符串中的文本?在 google 工作表中,这与称为 INDIRECT 的东西非常相似,能够成为您所指的数据。
// Code I like to write:
TextName = "richTextBox";
TextName.Text = "text for richTextBox";
我希望该代码被视为
richTextBox.Text = "text for richTextBox";
但是 richTextBox.Text
全部或部分是一个变量,这样我就可以把这整个东西放在一个方法中,只改变变量,而不是整个代码都有一个完整的方法及以上。
如果需要的话,我正在使用 .NET6.0。
我想您将在表单中执行此操作。在这种情况下,您可以将此代码添加到您的表单中:
public string this[string name]
{
get
{
return this.Controls.ContainsKey(name) ?
this.Controls[name].Text :
null;
}
set
{
if (this.Controls.ContainsKey(name))
{
var control = this.Controls[name];
control.Text = value;
}
}
}
和get/set任意Control
的文本是这样的:
this["richTextBox"] = "text for richTextBox";
var text = this["richTextBox"];
this
是你的表格。
如果你打算在多个表单中使用,你可以创建一个扩展方法:
public static class FormExtends
{
public static string GetText(this Form form, string name, string defaultText = null)
{
return form.Controls.ContainsKey(name) ?
form.Controls[name].Text :
(defaultText ?? string.Empty);
}
public static void SetText(this Form form, string name, string text)
{
if (form.Controls.ContainsKey(name))
{
var control = form.Controls[name];
control.Text = text;
}
}
}
并简化每种形式的代码:
public string this[string name]
{
get { return this.GetText(name); }
set { this.SetText(name, value); }
}
我想使用一个变量,这里我使用TextName作为变量。 然后将其用作 属性。当然我不能,因为它是一个字符串,但是我如何才能将 variable/string 视为它所持有的字符串中的文本?在 google 工作表中,这与称为 INDIRECT 的东西非常相似,能够成为您所指的数据。
// Code I like to write:
TextName = "richTextBox";
TextName.Text = "text for richTextBox";
我希望该代码被视为
richTextBox.Text = "text for richTextBox";
但是 richTextBox.Text
全部或部分是一个变量,这样我就可以把这整个东西放在一个方法中,只改变变量,而不是整个代码都有一个完整的方法及以上。
如果需要的话,我正在使用 .NET6.0。
我想您将在表单中执行此操作。在这种情况下,您可以将此代码添加到您的表单中:
public string this[string name]
{
get
{
return this.Controls.ContainsKey(name) ?
this.Controls[name].Text :
null;
}
set
{
if (this.Controls.ContainsKey(name))
{
var control = this.Controls[name];
control.Text = value;
}
}
}
和get/set任意Control
的文本是这样的:
this["richTextBox"] = "text for richTextBox";
var text = this["richTextBox"];
this
是你的表格。
如果你打算在多个表单中使用,你可以创建一个扩展方法:
public static class FormExtends
{
public static string GetText(this Form form, string name, string defaultText = null)
{
return form.Controls.ContainsKey(name) ?
form.Controls[name].Text :
(defaultText ?? string.Empty);
}
public static void SetText(this Form form, string name, string text)
{
if (form.Controls.ContainsKey(name))
{
var control = form.Controls[name];
control.Text = text;
}
}
}
并简化每种形式的代码:
public string this[string name]
{
get { return this.GetText(name); }
set { this.SetText(name, value); }
}