有没有办法在Windows Forms C#中使用一个声明设置多个属性?
我正在为游戏制作技能计算器,我希望能够做到这样的事情:
someControl.Text = "some text",
.BackgroundImage = "someImage.jpg";
是否可以做类似的事情?
答案 0 :(得分:7)
在VB中,您可以使用“WITH”关键字。 C#中最接近的东西是采用对象初始化器的构造函数。
var someControl = new Control() {
Text = "SomeText",
BackgroundImage "someImage.jpg" };
但不,我认为没有办法在C#中做你要求的事。
答案 1 :(得分:2)
您所谈论的是一个流畅的界面 [Wikipedia] 。不幸的是,没有办法在C#中以流畅的方式链接属性。类型初始化程序块可用于实现几乎相同的效果,但仅限于构建对象时。因为它是WinForms,所以构造可能发生在设计器生成的代码中。最好不要与此相提并论。
但是,如果您愿意,可以使用方法创建流畅的界面:
class Widget
{
public Widget SetFoo(int foo)
{
// Set the Foo property or whatever...
return this;
}
public Widget SetBar(int bar)
{
// Set the Bar property or whatever...
return this;
}
}
然后,您可以像这样使用类:
var w = new Widget().SetFoo(23).SetBar(42);
您甚至可以使用扩展方法为.NET框架类型和控件执行此操作。但是,除非你经常使用它,否则在框架类中添加这样的接口可能有点过分了。
答案 2 :(得分:1)
如果您正在创建(或者更确切地说,构建)SomeControl
,您可以使用初始化程序;
myControl = new SomeControl {
Text = "blablabla",
BackgroundImage = "someimage.jpg" };
否则你的答案显然是一个无聊的“不”......