【发布时间】:2013-10-17 05:34:07
【问题描述】:
我对 C#(和一般编程)还很陌生,所以如果我犯了任何重大错误或完全牛市,请坚持我。 所以我想要做的是有一个私人空白来调整按钮的背景图像的大小。我通过字符串将按钮的名称发送到私有 void。无论如何,代码看起来像这样:
ButtonResize("Zwaard");
protected void ButtonResize(string Button)
{
string ButNaam = "btn" + Button;
Button Butnaam = new Button();
Butnaam.Text = ButNaam;
if (Butnaam.BackgroundImage == null)
{
return;
}
else
{
var bm = new Bitmap(Butnaam.BackgroundImage, new Size(Butnaam.Width, Butnaam.Height));
Butnaam.BackgroundImage = bm;
}
}
但它不是那样工作的。我似乎找不到一种方法来声明一个名为我在字符串中的值的新对象。我希望我的代码做的不是创建一个名为“Butnaam”的按钮,而是创建一个名为 btnZwaard(字符串 Butnaam 的值)的按钮。
如何告诉 C# 我希望变量的值是新按钮的名称,而不是我输入的字面意思?
提前致谢。
【问题讨论】:
-
可能有一些方法可以使用反射来做类似的事情,但不要这样做。这是个坏主意。创建将名称映射到对象的单个 Dictionary 对象,并将动态创建的名称用作字典键,而不是用作变量名称。
-
您真的要每次都创建一个新按钮吗?如果它有效,这就是你当前的代码会做的事情。
-
嗯,实际上没有,但我似乎无法从受保护的 void 访问所需按钮的属性,所以我想我只需要创建一个名称相同的对象,访问它的属性和它也会改变我原来的按钮......如果你明白我的意思。不过,我可能只是想多了。我想要那段代码实际上是更改所需按钮(我发送名称)的背景图像的大小
-
@Glenn:
"so I figured I just had to create an object named the same, acces it's properties and it would change for my original button as well"- .... 不完全是。如果需要修改现有对象,则需要对该对象的引用。
标签: c# class variables void protected