我正在使用Visual Studio 2010 c#开发一个应用程序。
我有两种形式,如下图所示:
在Form2中,我有一个DataGridView
控件和用户名,在Form1中我有一个TextBox和一个Button。我打开了Form2:
Form2 frm = new Form2();
frm.ShowDialog();
如何在Form1 TextBox中获取GDataGridView的选定列值?
答案 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(); }
}
欢呼声.. !!!!!!!!!