如何打开表单2数据网格数据以形成1个文本框 [英] How to open form 2 datagrid data to form 1 textbox

查看:57
本文介绍了如何打开表单2数据网格数据以形成1个文本框的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个表单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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆