2016-03-31 31 views
0

私は、編集のために別のフォームにdatagridviewの値を渡すことを検討しています。私はコードの背後にある多くの例を見つけることができますが、私は本当にこのコードをコードの背後に置く例を見つけることはできません。別のフォームにdatagridviewの値を渡す

私のコード例

ProductView productView = new ProductView(); 

productview.txtbox1.Text = this.dataGridView1.CurrentRow.Cells[1].Value.ToString(); 
productview.txtbox2.Text = this.dataGridView1.CurrentRow.Cells[2].Value.ToString(); 
productview.txtbox3.Text = this.dataGridView1.CurrentRow.Cells[3].Value.ToString(); 
productview.txtbox4.Text = this.dataGridView1.CurrentRow.Cells[0].Value.ToString(); 
productview.ShowDialog(); 

は、背後にあるコードに置くために許可されているこの何かありますか? 私は可能な限りコードを少なくし、必要なものだけを置こうとします。

+1

"できるだけコードの背後に置く"とはどういう意味ですか?あなたのコードはどこに置くのですか? –

+0

私はできるだけプレゼンター/コントローラー/に入れようとしています...しかし、この状況では私は何をするべきかわかりません – suspected

答えて

0

「許可」をどのように定義するかによって異なります。それはコンパイラと.NETフレームワークがこれを可能にするように動作しますが、それは良い習慣ですか?さてあなたは何とかしかし彼らにactaully「TBNAME」または「nameTextbox」か何かのようなものを意味し、名前を付けて「のTextBox1」などのようなあなたのTextBoxに名前を付けないでくださいさんはbeggining

  1. から始めましょう、それを渡す必要があります自己分泌型。
  2. ProductViewフォームがこの詳細を表示するために排他的に作成された場合、これらのパラメータを(好ましくはクラスとして)受け入れるこのクラスのコンストラクタを作成します。 例えば、私は以下のようないくつかの別々のプロジェクトで新しいクラスを作成します。

public class ProductViewOptions 
{ 
    public string ProductName{ get; set; } 
    public decimal ProductPrice { get; set; } 
    ... 
} 

さらにProductViewフォームで、上記の型のプライベートプロパティを作成し、この型の引数を受け入れるコンストラクタを作成します。はるかに読みやすいだろうこれはあなたのコードに

public class ProductView : Form 
{ 
    private ProductViewOptions productOptions; 
    public ProductView(ProductViewOptions ProductOptions) 
    { 
     this.productOptions = ProductOptions; 
    } 
    ... 
} 

おかげで、あなたの例は次のようになります:それは以下のようになります。

ProductViewOptions productOptions = new ProductViewOptions(); 
productOptions.ProductName = this.dataGridView1.CurrentRow.Cells[1].Value.ToString(); 
productOptions.ProductPrice = this.dataGridView1.CurrentRow.Cells[2].Value.ToString(); 

ProductView productView = new ProductView(productOptions); 
productView.ShowDialog(); 

コードの新しい作品は、自己explantatoryと読みやすいです維持する。