在c#winform中选择DataGridView的列值

时间:2013-11-14 06:07:21

标签: c# winforms c#-4.0 datagridview

我正在使用Visual Studio 2010 c#开发一个应用程序。

我有两种形式,如下图所示:

enter image description here

在Form2中,我有一个DataGridView控件和用户名,在Form1中我有一个TextBox和一个Button。我打开了Form2:

Form2 frm = new Form2();
        frm.ShowDialog();

如何在Form1 TextBox中获取GDataGridView的选定列值?

5 个答案:

答案 0 :(得分:1)

试试这个: 获取选定网格值

if (dataGridView1.SelectedRows.Count != 0)
{
    string selectedval;
    DataGridViewRow row = this.dataGridView1.SelectedRows[0];
    selectedval= row.Cells["ColumnName"].Value
}

定义表单的属性,然后在其他地方使用它,它可以使用表单实例

public string SetText
{
  get { return textBox1.Text; }
  set { textBox1.Text = value; }
}

答案 1 :(得分:1)

您可以使用事件来解决问题。只需在您的form2中创建一个事件,就像这样

public event Action<string> DatagridCellSelected; 

在你的form1中连接一个带有此事件的方法。

DatagridCellSelected+=form2_DatagridCellSelected;

在这个方法中做这样的事情

textbox1.Text = obj;

现在在你的form2句柄DataGridView单元格中输入事件

private void dataGridView1_CellEnter(object sender, DataGridViewCellEventArgs e)
{
    var value = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString();
    DatagridCellSelected(value ?? "");
}

答案 2 :(得分:1)

有我的变种。使用数据网格将此属性添加到Form类:

    public DataGridViewCell SelectedCell
    {
        get
        {
            return dataGridView1.SelectedCells.Count > 0 ? dataGridView1.SelectedCells[0] : null;
        }
    }

    public string SelectedValue 
    {
        get
        {

            var val = SelectedCell != null ? SelectedCell.Value : null;
            return val != null ? val.ToString() : null;
        }
        set
        {
            SelectedCell.Value = value;
        }
    }

用法:

form.SelectedValue = "123";

只有选中一个单元格时才能正常工作。

答案 3 :(得分:1)

这是一个解决您情况的干净代码

假设您有两种形式 Form1 Form2

Form 1文本框按钮。点击按钮 Form2

Form1.cs

        private void button1_Click(object sender, EventArgs e)
        {
              Form2 f = new Form2();
              f.DataGridCell += new Action<string>(f_DatagridCell);
              f.ShowDialog();
        }

       void f_DatagridCell(string obj)
       {
         textBox1.Text = obj;
       }

并在Form2.cs

      public event Action<string> DataGridCell ;


       private void dataGridView1_CellEnter(object sender, DataGridViewCellEventArgs e)
       {
        try
        {
            if (DatagridCell!=null)
            {
                var value = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString();
                DatagridCell(value);

            }

        }
        catch { }
    } 

你完成了:)

答案 4 :(得分:-1)

找到所有建议的正确答案。

感谢您的帮助。

这是我所有有需要的人的工作代码。

在Form1中

private void BtnSelect_Click(object sender, EventArgs e)
        {
            frm.ShowDialog();
            textBox1.Text= frm._textBox1.ToString();
        }
        public string _textBox
        {
            set { textBox1.Text = value; }
        }

并在Form2中

private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            string val = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString();
            textBox1.Text = val;
            this.Close();
        }
        public string _textBox1
        {
            get { return textBox1.Text.Trim(); }
        }

欢呼声.. !!!!!!!!!