0

したがって、フォーム1にはdatagridviewがあり、ユーザーがクライアントのいずれかを編集したい場合、クライアントを選択して編集ボタンをクリックします...新しいウィンドウが表示されます

新しいウィンドウで、テキストボックス 1 にクライアントの名前、テキストボックス 2 にアドレスを入力します。

これがform1のコードです

    public void Clientesgrid_Cellclick(object sender, DataGridViewCellEventArgs e)
    {
        int index = clientesgrid.SelectedRows[0].Index;
    }

form1に欠けているものはありますか?インデックスを他の形式にするにはどうすればよいですか? ヘルプ。

4

3 に答える 3

1

最も簡単な方法は、おそらく のコンストラクターに含めることですForm2。したがって、Form2次のようなものがあります。

public Form2(int clientID)
{
    // Do something with the clientID
    // Most likely set it to a property on Form2, or a private member.
}

次にForm1、インスタンスを作成すると、次のForm2ようになります。

var index = clientesgrid.SelectedRows[0].Index;
var editForm = new Form2(index);
editForm.Show();

理想的には、このパラメーターを単にonの行インデックスではなく、クライアントの識別子にする必要があります。この理由は、それが単なる行インデックスであり、行に必要なデータが含まれていて、必要なものがない場合、さらにデータを取得するために依存しているためです。DataGridViewForm1Form2Form1

依存関係をできるだけ減らします。のインスタンスはForm2、ジョブを実行するために必要なものをコンストラクターで要求する必要があります。Form2次に、必要なものを提供できる限り、他のフォームは のインスタンスを作成できます。

Form2 この識別子が常に必要な場合は、追加の手順を実行して、パラメーターなしのコンストラクターを非公開にすることができます。

private Form2() { }

Form2これにより、必要な値を提供せずに他のフォームが のインスタンスを作成するのを防ぐことができます。

于 2013-02-11T18:54:33.357 に答える
0

publicForm2 にorinternalプロパティ / フィールドを作成する

class Form2
{
    internal int RowIndex; // or  internal int RowIndex {get; set;}
}

のように呼びます

public void Clientesgrid_Cellclick(object sender, DataGridViewCellEventArgs e)
{
    form2.RowIndex = clientesgrid.SelectedRows[0].Index;
}
于 2013-02-11T18:54:23.040 に答える
0

たとえば、このように、何らかの方法で2番目のフォームに渡す必要があります

public void Clientesgrid_Cellclick(object sender, DataGridViewCellEventArgs e)
{
    form2.RowIndex = clientesgrid.SelectedRows[0].Index;
}
于 2013-02-11T18:51:43.257 に答える