在Windows窗体(C#)中使用一个声明设置多个属性

时间:2013-06-10 20:54:29

标签: c# windows winforms

有没有办法在Windows Forms C#中使用一个声明设置多个属性?

我正在为游戏制作技能计算器,我希望能够做到这样的事情:

someControl.Text = "some text",
           .BackgroundImage = "someImage.jpg";

是否可以做类似的事情?

3 个答案:

答案 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" };

否则你的答案显然是一个无聊的“不”......