1

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

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

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

有可能做这样的事情吗?

4

3 回答 3

7

在 VB 中,您可以使用“WITH”关键字。C# 中最接近的东西是采用对象初始值设定项的构造函数。

var someControl = new Control() {
                         Text = "SomeText",
                         BackgroundImage "someImage.jpg" };

但不,我认为没有办法在 C# 中做你所要求的。

于 2013-06-10T20:59:12.697 回答
2

你在说的是一个流畅的界面[维基百科]。不幸的是,没有办法在 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 框架类型和控件执行此操作。但是,除非您经常使用它,否则将这样的接口添加到框架类可能是矫枉过正。

于 2013-06-10T20:58:45.620 回答
1

如果您正在创建(或者更确切地说是构造SomeControl,则可以使用初始化程序;

myControl = new SomeControl {
    Text = "blablabla",
    BackgroundImage = "someimage.jpg" };

否则你的答案是一个简单的无聊的“不”......

于 2013-06-10T21:00:22.917 回答