我有一个绑定的datagridview。当我在datagridview中选择一个单元格并按下回车时,我想要引发一个事件,它将所选单元格的第一列值传递给另一个表单。怎么做?
答案 0 :(得分:2)
我通过对datagridview使用_EditingControlShowing
事件并在此处使用PreviewKeyDown到单元格来解决了这个问题:
DataGridView1.EditingControlShowing += new DataGridViewEditingControlShowingEventHandler (DataGridView1_EditingControlShowing);
private void dbg_EditingControlShowing (object sender, DataGridViewEditingControlShowingEventArgs e) {
TextBox txb = e.Control as TextBox;
txb.PreviewKeyDown += (S, E) => {
if (E.KeyCode == Keys.Enter) {
DataGridView1.CurrentCell = dbg.CurrentRow.Cells["Column_name"];
//Or any code you ...
}
};
}
答案 1 :(得分:1)
void TextBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
e.Handled = true;
}
}
void TextBox1_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
{
if (e.KeyCode == Keys.Return)
{
/* Your code here! */
}
}
答案 2 :(得分:0)
假设这是针对Winforms的,您可以订阅其中一个Key事件并使用该事件。
例如,这里使用KeyUp
事件。
private void myDataGridView_KeyUp(object sender, KeyEventArgs e)
{
// nothing is selected
if (myDataGridView.SelectedRows.Count == 0)
return;
if (e.KeyCode == Keys.Enter)
{
string firstColumnValue = myDataGridView.SelectedRows[0].Cells[0].Value.ToString();
// passes the value through the constructor to the
// second form.
MySecondForm f2 = new MySecondForm(firstColumnValue);
f2.Show();
}
}
答案 3 :(得分:0)
表格1代码:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
DataTable dt = new DataTable();
dt.Columns.Add("ID");
dt.Columns.Add("Name");
dt.Rows.Add();
dt.Rows[dt.Rows.Count - 1][0] = "1";
dt.Rows[dt.Rows.Count - 1][1] = "Stackoverflow";
dataGridView1.DataSource = dt;
}
string ID = string.Empty;
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
ID = dataGridView1.SelectedRows[0].Cells["ID"].Value.ToString();
}
private void dataGridView1_KeyUp(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
Form2 frmTwo = new Form2(ID);
frmTwo.Show();
}
}
}
表格2代码:
public partial class Form2 : Form
{
public string Id = string.Empty;
public Form2(string FormOneID)
{
InitializeComponent();
Id = FormOneID;
}
private void Form2_Load(object sender, EventArgs e)
{
MessageBox.Show("FormOne ID" + Environment.NewLine + Id + Environment.NewLine + "Displaying on FormTwo");
}
}