通过名称作为字符串访问对象 c#
Access an object through its name as a string c#
我试图找出如何通过与对象名称同名的字符串访问对象。
例如,我想使用 for loop
更改 n 次 Buttons 的 属性
public static object GetObject(string ObjectName)
{
// this Method has to return an Object through his name
}
for (int i = 1; i < 4; i++)
{
GetObject(Convert.ToString("Button" +i) ).Text = Convert.ToString(i);
}
}
}
此代码与此代码功能相同
Button1.Text = "1";
Button2.Text = "2";
Button3.Text = "3";
您可以使用 C#
开发不同类型的应用程序。即 Web
、WinForms
、WPF
。他们有不同类型的 Control
和 Type
。我假设您正在开发 WinForms
应用程序。在这种情况下,您可以使用 WinForm
的 Controls
属性 来访问 Form
.
的所有 Controls
请检查以下代码块的实现:
public object GetObject(string ObjectName)
{
// this Method has to return an Object through his name
Control myControl = Controls.Find(ObjectName, true).FirstOrDefault();
if (myControl != null)
{
// Do Stuff
return myControl;
}
else return null;
}
private void RenameButtons()
{
for (int i = 1; i < 4; i++)
{
//GetObject(Convert.ToString("Button" + i)).Text = Convert.ToString(i);
object btn = GetObject(Convert.ToString("Button" + i));
if (btn != null) ((Button)btn).Text = Convert.ToString(i);
}
}
您将通过以下 this link.
找到有关控件 属性 的更多详细信息
你可以试试这个
foreach (Control control in Controls)
{
var btn = control as Button;
if ( btn != null && btn.Name.StartsWith("Button") )
{
var i= btn.Name.Substring(6, 1)
//if( i.Convert.ToInt32() <4 ) //optional
btn.Text = i;
}
}
我试图找出如何通过与对象名称同名的字符串访问对象。 例如,我想使用 for loop
更改 n 次 Buttons 的 属性 public static object GetObject(string ObjectName)
{
// this Method has to return an Object through his name
}
for (int i = 1; i < 4; i++)
{
GetObject(Convert.ToString("Button" +i) ).Text = Convert.ToString(i);
}
}
}
此代码与此代码功能相同
Button1.Text = "1";
Button2.Text = "2";
Button3.Text = "3";
您可以使用 C#
开发不同类型的应用程序。即 Web
、WinForms
、WPF
。他们有不同类型的 Control
和 Type
。我假设您正在开发 WinForms
应用程序。在这种情况下,您可以使用 WinForm
的 Controls
属性 来访问 Form
.
Controls
请检查以下代码块的实现:
public object GetObject(string ObjectName)
{
// this Method has to return an Object through his name
Control myControl = Controls.Find(ObjectName, true).FirstOrDefault();
if (myControl != null)
{
// Do Stuff
return myControl;
}
else return null;
}
private void RenameButtons()
{
for (int i = 1; i < 4; i++)
{
//GetObject(Convert.ToString("Button" + i)).Text = Convert.ToString(i);
object btn = GetObject(Convert.ToString("Button" + i));
if (btn != null) ((Button)btn).Text = Convert.ToString(i);
}
}
您将通过以下 this link.
找到有关控件 属性 的更多详细信息你可以试试这个
foreach (Control control in Controls)
{
var btn = control as Button;
if ( btn != null && btn.Name.StartsWith("Button") )
{
var i= btn.Name.Substring(6, 1)
//if( i.Convert.ToInt32() <4 ) //optional
btn.Text = i;
}
}