【解決方法】DataGridView の選択した行の列の値をテキストボックスに入力します


こんにちは、datagridviewからテキストボックスに値を取得する際に助けが必要です。SQLから取得したデータをSQLから取得するdatagridviewがあり、SQLから取得した4つの列と行数をカウントします。テキストボックスが4つあり、datagridviewで選択した行の列の値をテキストボックス。

同じように親切にアドバイスしてください。

解決策 1

おそらく、 に応答したいと思うでしょう。 DataGridView.SelectionChanged イベント[^]。
そのハンドラーでは、単一の行が選択されているかどうかを確認し、その行から値を取得してテキスト ボックスに配置します。

C#
private void DataGridView1_SelectionChanged(object sender, EventArgs e)
{
  if( DataGridView1.SelectedRows.Count = 0 )
  {
    TextBox1.Value = DataGridView1.SelectedRows(0).Cells(0).Value;
    TextBox2.Value = DataGridView1.SelectedRows(0).Cells(1).Value;
    TextBox3.Value = DataGridView1.SelectedRows(0).Cells(2).Value;
    TextBox4.Value = DataGridView1.SelectedRows(0).Cells(3).Value;
  }
}

コードはテストされていないため、タイプミスが含まれている可能性があります。

を確認してください。 DataGridView.SelectionMode プロパティ[^] に設定されています FullRowSelect これが機能するように。

使用できます DataGridView.MultiSelect プロパティ[^] 一度に 1 行だけが選択されるようにします。

解決策 3

こんにちは、今は順調です

C#
private void dgviewSearch_CellcontentClick(object sender, DataGridViewCellEventArgs e)
{
int i;
i = dgViewSearch.SelectedCells[0].RowIndex;
textBox3.Text = dgViewSearch.Rows[i].Cells[1].Value.ToString();
textBox4.Text = dgViewSearch.Rows[i].Cells[3].Value.ToString();
}

ご協力ありがとうございます。(2001,2002,2003) のように、datagridview で ,(カンマ) を使用してテキストボックスに複数選択できることを楽しみにしています。

解決策 2

グリッドの MouseClick イベントを登録し、次のコードを使用します。

C#
private void dataGridView1_MouseClick(object sender, MouseEventArgs e)
{
    DataGridViewRow dr = dataGridView1.SelectedRows[0];
    textBox1.Text = dr.Cells[0].Value.ToString();
     // or simply use column name instead of index
    //dr.Cells["id"].Value.ToString();
    textBox2.Text = dr.Cells[1].Value.ToString();
    textBox3.Text = dr.Cells[2].Value.ToString();
    textBox4.Text = dr.Cells[3].Value.ToString();
}

そして、ロードイベントに次の行を追加します

C#
dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;

解決策 8

private void dgvAllUsers_CellContentClick(オブジェクト送信者、DataGridViewCellEventArgs e)
{

if (e.RowIndex >= 0)
{
DataGridViewRow 行 = this.dgvAllUsers.Rows[e.RowIndex];

textId.Text = row.Cells[“idUser”].Value.ToString();
textFullName.Text = row.Cells[“FullName”].Value.ToString();
textUserName.Text = row.Cells[“UserName”].Value.ToString();
textPassword.Text = row.Cells[“Password”].Value.ToString();
textAddress.Text = row.Cells[“Address”].Value.ToString();
textGender.Text = row.Cells[“Gender”].Value.ToString();
textContactNumber.Text = row.Cells[“ContactNumber”].Value.ToString();
ComboUserType.SelectedText = row.Cells[“UserType”].Value.ToString();
}
}

解決策 9

矢印キーでセルを移動する場合、またはマウスでクリックする場合は両方に便利なので、必ず GridView1_CellEnt イベントを使用してください。
常に if (dataGridView1.SelectedCells.Count > 0) を使用します。それ以外の場合は、完全な行を選択する必要があります。
private void dataGridView1_CellEnter(オブジェクト送信者、DataGridViewCellEventArgs e)
{
if (dataGridView1.SelectedCells.Count > 0) // ユーザーが少なくとも 1 行を選択していることを確認します
{

DataGridToTextboxes(e.RowIndex);

}
}

private void DataGridToTextboxes(int x)
{

文字列Item1 = dataGridView1.Rows[x].セル[1].Value + string.Empty;

// 文字列 SrNo = selectedRows.Cells[0].Value + string.Empty;
// 文字列Item1 = selectedRows.Cells[1].Value + string.Empty;

文字列 MinRange = dataGridView1.Rows[x].セル[2].Value + string.Empty;
文字列 MaxRange = dataGridView1.Rows[x].セル[3].Value + string.Empty;

文字列 MinStable = dataGridView1.Rows[x].セル[4].Value + string.Empty;
文字列 MaxStable = dataGridView1.Rows[x].セル[5].Value + string.Empty;

txtItem.Text = アイテム1;
TextMinRange.Text = MinRange;
TextMaxRange.Text = MaxRange;
TextMinStable.Text = MinStable;
TextMaxStable.Text = MaxStable;
}

コメント

タイトルとURLをコピーしました