1

通常、Web プロジェクトでは、データの追加と更新に 1 つの Web フォームを使用します。winforms環境をスクラッチしただけなので、同じアプローチを1つのフォームに使用してデータを追加および更新することを考えていました。

addEditForm のように2つのコンストラクターを使用することを考えていました

public AddEditForm()
{
   .. to do new object
}
public AddEditForm(MyDataObj obj)
{      
   ... to do edit
}

それで、これは正しいアプローチですか、それともより良い実践がありますか?

ありがとう

4

4 に答える 4

2

次の方法で、さまざまなコンストラクターを作成できます。

MyDataObj editItem=null;
public AddEditForm()
{      
   InitializeComponent();
   //Other common code for initialization.
}

public AddEditForm(MyDataObj obj) : this()
{      
    editItem = obj;
    //Other code specific to editing.
}

オブジェクトeditItemが null の場合、フォームは追加モードであると見なされ、それ以外の場合は編集モードであると見なされます。

同じものに対してプロパティを作成することもできます。次に例を示します。

public bool IsEditMode
{
    get
    {
        return (editItem != null);
    }
}

それが役に立てば幸い...

于 2013-10-16T11:43:00.860 に答える
2

コメントで言ったように、もちろん、MVP を使用していないときもこのアプローチを使用します (これは別の話です)。

InitializeComponent() の呼び出しについては、(名前からわかるように) フォームとそのコントロールを初期化するメソッドであり、それがないと空のフォームが得られるため、フォームの構築に必要です。

しかし、InitializeComponent() を 2 回呼び出すことが心配な場合は、次の方法をお勧めします。

MyDataObj _myObject;
public AddEditForm()
{
    InitializeComponent();
}

public AddEditForm(MyDataObj obj)
    :this()
{      
    if(obj == null) //you're creating the object
       _myObject = new MyDataObj();
    else // you're editing it
        _myObject = obj;
}
// Continue my work with _myObject
于 2013-10-16T11:41:34.223 に答える