我想使用一個變數,這里我使用 TextName 作為變數。然后將其用作屬性。當然我不能,因為它是一個字串,但是我如何讓一個變數/字串被視為它所持有的字串中的文本?在谷歌表格中,這與稱為 INDIRECT 的東西非常相似,能夠成為您所指的資料。
// Code I like to write:
TextName = "richTextBox";
TextName.Text = "text for richTextBox";
我希望將該代碼視為
richTextBox.Text = "text for richTextBox";
但是richTextBox.Text
全部或部分是一個變數,這樣我就可以把這整個東西放在一個方法中,只改變變數,而不是一遍又一遍地在整個代碼中擁有一個完整的方法。
如果重要的話,我正在使用 .NET6.0。
uj5u.com熱心網友回復:
我想您將在表單中執行此操作。在這種情況下,您可以將此代碼添加到您的表單中:
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;
}
}
}
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); }
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/476743.html
下一篇:如何遞回獲取每個專案的級別?