1

Windows フォーム C# で 1 つの宣言で複数のプロパティを設定する方法はありますか?

ゲーム用のスキル計算機を作成していますが、次のようなことができるようにしたいと考えています。

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 に答える