如何打开表单2数据网格数据以形成1个文本框 [英] How to open form 2 datagrid data to form 1 textbox
问题描述
我有一个表单form1,还有一个搜索按钮。当我点击搜索按钮然后打开一个新表单,即form2,在form2中有一个数据gridview控件。我想当我点击datagrid记录单元格然后这个选定的值进入form1 textbox1和textbox2。
i在表单2中的代码下方使用,但是文本框没有。
private void dataGridView1_CellContentClick(object sender,DataGridViewCellEventArgs e)
{
DataGridViewRow row = dataGridView1.Rows [e.RowIndex];
textBox1.Text = row.Cells [0] .Value.ToString();
textBox2.Text = row.Cells [1] .Value.ToString();
}
打开form2作为搜索按钮上的对话框,单击并在form2代码中获取var selectedRow,在CellContentClick上分配所选的datagrid行并设置dialog = true,现在可以访问该行。在搜索按钮上编写的代码单击form1:
Form2 form2 = new Form2();
if(form2.ShowDialog()== true)
{
textBox1.Text = form2.selectedRow.Cells [0] .Value.ToString();
textBox2.Text = form2.selectedRow.Cells [1] .Value.ToString();
}
在单元格内容上写入Form2的代码点击:
private void dataGridView1_CellContentClick( object sender,DataGridViewCellEventArgs e)
{
selectedRow = dataGridView1.Rows [e.RowIndex];
此 .DialogResult = true ;
this .Close();
}
您好,
您可以使用事件在表单之间进行通信。
添加到您的项目文件:SearchResultEventArgs.cs:
public class SearchResultEventArgs:EventArgs
{
public string ResultText1
{
get ;
private set ;
}
public string ResultText2
{
get ;
private set ;
}
public SearchResultEventArgs( string result1, string result2)
{
ResultText1 = result1;
ResultText2 = result2;
}
}
将此代码添加到您的Form2:
public event EventHandler< SearchResultEventArgs>搜索结果;
private void OnSearchResult( string result1, string result2)
{
var handler = SearchResult;
if (handler!= null )
{
handler( this , new SearchResultEventArgs(result1,result2));
}
}
修改DataGridView CellContentClick事件(在Form2上):
private void dataGridView1_CellContentClick( object sender,DataGridViewCellEventArgs e)
{
DataGridViewRow row = dataGridView1.Rows [e.RowIndex];
OnSearchResult(row.Cells [ 0 ]。Value.ToString(),row.Cells [ 1 跨度>] Value.ToString)。
}
现在在Form1中添加此方法:
private void form2_SearchResult( object sender, SearchResultEventArgs e)
{
textBox1.Text = e.ResultText1;
textBox2.Text = e.ResultText2;
}
修改用于调用Form2的代码:
( var form2 = =code-keyword> new Form2())
{
...
form2.SearchResult + = new EventHandler< SearchResultEventArgs>(form2_SearchResult);
if (form2.ShowDialog()== DialogResult.OK)
{
// ...
}
...
}
现在几个链接:
http://msdn.microsoft.com/en-us/library/aa645739%28v=vs.71%29.aspx [ ^ ]
http://msdn.microsoft.com/library/system.eventargs%28v= vs.110%29.aspx [ ^ ]
一步一步:C#中的事件处理 [ ^ ]
通用事件参数 [ ^ ]
希望它可以帮助你:)
I have a form form1 and there is a search button for searching. when i click search button then a new form opens i.e. form2 and in form2 there is a data gridview control. i want when i click on datagrid records cell then this selected values comes onto the form1 textbox1 and textbox2.
i used below code in form 2 but textbox not taking.
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
DataGridViewRow row = dataGridView1.Rows[e.RowIndex];
textBox1.Text = row.Cells[0].Value.ToString();
textBox2.Text = row.Cells[1].Value.ToString();
}
Open form2 as dialog on search button click and take a var selectedRow in form2 code, assign selected row of datagrid on CellContentClick and set dialog=true, now you can access that row. Code to write on search button click in form1 :
Form2 form2 = new Form2(); if (form2.ShowDialog() == true) { textBox1.Text = form2.selectedRow.Cells[0].Value.ToString(); textBox2.Text = form2.selectedRow.Cells[1].Value.ToString(); }
Code to write in Form2 on cell content click:
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e) { selectedRow=dataGridView1.Rows[e.RowIndex]; this.DialogResult = true; this.Close(); }
Hi,
You can communicate between form using events.
Add to your project file: SearchResultEventArgs.cs:
public class SearchResultEventArgs : EventArgs { public string ResultText1 { get; private set; } public string ResultText2 { get; private set; } public SearchResultEventArgs(string result1, string result2) { ResultText1 = result1; ResultText2 = result2; } }
Add this code to your Form2:
public event EventHandler<SearchResultEventArgs> SearchResult; private void OnSearchResult(string result1, string result2) { var handler = SearchResult; if (handler != null) { handler(this, new SearchResultEventArgs(result1, result2)); } }
Modify your DataGridView CellContentClick event (on Form2):
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e) { DataGridViewRow row = dataGridView1.Rows[e.RowIndex]; OnSearchResult(row.Cells[0].Value.ToString(), row.Cells[1].Value.ToString); }
Now in Form1 add this method:
private void form2_SearchResult(object sender, SearchResultEventArgs e) { textBox1.Text = e.ResultText1; textBox2.Text = e.ResultText2; }
And modify code that you're using to call Form2:
using (var form2 = new Form2()) { ... form2.SearchResult += new EventHandler<SearchResultEventArgs>(form2_SearchResult); if (form2.ShowDialog() == DialogResult.OK) { // ... } ... }
Now few links:
http://msdn.microsoft.com/en-us/library/aa645739%28v=vs.71%29.aspx[^]
http://msdn.microsoft.com/library/system.eventargs%28v=vs.110%29.aspx[^]
Step by Step: Event handling in C#[^]
Generic Event Arguments[^]
Hope it helps you :)
这篇关于如何打开表单2数据网格数据以形成1个文本框的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!