有没有办法在 Windows Forms C# 中使用一个声明来设置多个属性?
我正在为游戏制作技能计算器,我希望能够做这样的事情:
someControl.Text = "some text",
.BackgroundImage = "someImage.jpg";
有可能做这样的事情吗?
在 VB 中,您可以使用“WITH”关键字。C# 中最接近的东西是采用对象初始值设定项的构造函数。
var someControl = new Control() {
Text = "SomeText",
BackgroundImage "someImage.jpg" };
但不,我认为没有办法在 C# 中做你所要求的。
你在说的是一个流畅的界面[维基百科]。不幸的是,没有办法在 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 框架类型和控件执行此操作。但是,除非您经常使用它,否则将这样的接口添加到框架类可能是矫枉过正。
如果您正在创建(或者更确切地说是构造)SomeControl
,则可以使用初始化程序;
myControl = new SomeControl {
Text = "blablabla",
BackgroundImage = "someimage.jpg" };
否则你的答案是一个简单的无聊的“不”......