43

WindowsフォームにDataGridView(Selectionmode:FullRowSelect)といくつかのテキストボックスがあるので、ユーザーが行を選択するたびに(クリックまたはダブルクリックする可能性があります)、その行の内容をテキストに表示する必要があります。ボックス、

私はこのコードを試しました

private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
{
    MessageBox.Show("CEll Double_Click event calls");
    int rowIndex = e.RowIndex;
    DataGridViewRow row = dataGridView1.Rows[rowIndex];
    textBox5.Text = row.Cells[1].Value;
}

private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
    int rowIndex = e.RowIndex;
    DataGridViewRow row = dataGridView1.Rows[rowIndex];
    textBox5.Text = dataGridView1.Rows[1].Cells[1].Value.ToString();// row.Cells[1].Value;
}

他にも多くのテキストボックスがありますが、主な問題は、どのイベントもトリガーされていないように見えること、トリガーするためにどのイベントを使用する必要があるか、または間違って設定した可能性のあるdatagridのプロパティがあるかどうかです。どんな助けもいただければ幸いです...:(

4

6 に答える 6

62

FullRowSelect 選択モードを使用しているため、SelectionChanged イベントを使用できます。ハンドラー内より、SelectedRows プロパティにアクセスして、そこからデータを取得できます。例:

private void dataGridView_SelectionChanged(object sender, EventArgs e) 
{
    foreach (DataGridViewRow row in dataGridView.SelectedRows) 
    {
        string value1 = row.Cells[0].Value.ToString();
        string value2 = row.Cells[1].Value.ToString();
        //...
    }
}

インデックスを入力する代わりに、列コレクションをウォークスルーすることもできます...

于 2012-07-02T12:11:17.557 に答える
18

このクリックイベントを試すことができます

private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
    if (e.RowIndex >= 0)
    {
        DataGridViewRow row = this.dataGridView1.Rows[e.RowIndex];
        Eid_txt.Text = row.Cells["Employee ID"].Value.ToString();
        Name_txt.Text = row.Cells["First Name"].Value.ToString();
        Surname_txt.Text = row.Cells["Last Name"].Value.ToString();
于 2014-06-01T15:09:05.857 に答える
10

まずラベルを取ります。その可視性を false に設定し、DataGridView_CellClick イベントでこれを書き込みます

private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
    label.Text=dataGridView1.Rows[e.RowIndex].Cells["Your Coloumn name"].Value.ToString();
    // then perform your select statement according to that label.
}
//try it it might work for you
于 2013-05-14T13:02:05.653 に答える
4

デザイナー ファイルを確認する必要があります。Form1.Designer.cs を開き、次の行を見つけます。

windows Form Designer Generated Code.  

これを展開すると、多くのコードが表示されます。したがって、この行が datagridview1 コントロール内に存在するかどうかを確認してください。

this.dataGridView1.CellClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dataGridView1_CellClick); 

お役に立てば幸いです。

于 2013-02-01T05:26:09.880 に答える