Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将DataGridView中的选定行/单元格值从一个窗体检索到另一个窗体_C#_Winforms_Datagridview - Fatal编程技术网

C# 将DataGridView中的选定行/单元格值从一个窗体检索到另一个窗体

C# 将DataGridView中的选定行/单元格值从一个窗体检索到另一个窗体,c#,winforms,datagridview,C#,Winforms,Datagridview,我是C#net的新手。我想将dataGridView单元格单击单元格值获取到另一个表单的文本框,但找不到正确的方法。我有两张表格。UserPanelfrm和2。frmAddProjects。UserPanelFrm由dataGridView组成,dataGridView显示数据库中的项目列表。我想在frmAddProjects的文本框中显示双击单元格的单元格信息 ProjectClass.cs的代码 public class ProjectClass { SqlConnection co

我是C#net的新手。我想将dataGridView单元格单击单元格值获取到另一个表单的文本框,但找不到正确的方法。我有两张表格。UserPanelfrm和2。frmAddProjects。UserPanelFrm由dataGridView组成,dataGridView显示数据库中的项目列表。我想在frmAddProjects的文本框中显示双击单元格的单元格信息

ProjectClass.cs的代码

public class ProjectClass
{
    SqlConnection conn = new SqlConnection(DataConnectionClass.DbConnection);
    public int ManageProject(int ProjectID, String BusinessName, String ContactPerson, String Phone, String Address, String CreatedDate, String AssignedTo, String Mode)
    {
        try
        {
            int result = 0;
            SqlCommand cmd = new SqlCommand("sp_ManageProject", conn);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.AddWithValue("@ProjectID", ProjectID);
            cmd.Parameters.AddWithValue("@BusinessName", BusinessName);
            cmd.Parameters.AddWithValue("@ContactPerson", ContactPerson);
            cmd.Parameters.AddWithValue("@Phone", Phone);
            cmd.Parameters.AddWithValue("@Address", Address);
            cmd.Parameters.AddWithValue("@CreatedDate", CreatedDate);
            cmd.Parameters.AddWithValue("@AssignedTo", AssignedTo);
            cmd.Parameters.AddWithValue("@Mode", Mode);
            conn.Open();
            result = cmd.ExecuteNonQuery();
            conn.Close();
            return result;
        }
        catch (Exception ex)
        {

            throw ex;
        }

         }
    public DataTable SelectAllProjects()
    {
        try
        {
            SqlCommand cmd = new SqlCommand("Select ID,ProjectID,BusinessName,ContactPerson,Phone,Address,CreatedDate,AssignedTo from tbl_ProjectInformation", conn);
            DataTable dt = new DataTable();
            conn.Open();
            SqlDataReader dr = cmd.ExecuteReader();
            dt.Load(dr);
            conn.Close();
            return dt;
        }
        catch (Exception ex)
        {

            throw ex;
        }
    }
}
将项目列表调用到UserPanelfrm dgvProjectDetails的代码:

ProjectClass pc = new ProjectClass();
dgvProjectDetails.DataSource = pc.SelectAllProjects();
cellclick的代码

    private void dgvProjectDetails_CellContentClick(object sender, DataGridViewCellEventArgs e)
    {

DataGridViewCell cell = null;
        foreach (DataGridViewCell selectedCell in dgvProjectDetails.SelectedCells)
        {
            cell = selectedCell;
            break;
        }
        if (cell != null)
        {
            DataGridViewRow row = cell.OwningRow;
            frmAddProjects.projectid = row.Cells["ProjectID"].Value.ToString();
            frmAddProjects.businessname = row.Cells["BusinessName"].Value.ToString();
            frmAddProjects.contactperson = row.Cells["ContactPerson"].Value.ToString();
            frmAddProjects.phone = row.Cells["Phone"].Value.ToString();
            frmAddProjects.address = row.Cells["Address"].Value.ToString();
            frmAddProjects.createddate = row.Cells["CreatedDate"].Value.ToString();
            frmAddProjects.assignedto= row.Cells["AssignedTo"].Value.ToString();
            // etc.
            frmAddProjects ProjectDetail = new frmAddProjects();
            ProjectDetail.ShowDialog();
        }
}
frmAddProjects代码:

public static string projectid, businessname,contactperson,phone,address,createddate,assignedto;
     public frmAddProjects()
    {
        InitializeComponent();

    }

public void fillRecord()
    {
        txtProjectID.Text = projectid;
        txtBusinessName.Text = businessname;
        txtContactPerson.Text = contactperson;
        txtPhone.Text = phone;
        txtAddress.Text = address;
        dTPCreatedDate.Text = createddate;
        cmbAssignedTo.Text = assignedto;
    }

如果要在双击后以另一种形式在文本框中显示GridDataView中单元格的内容,首先必须使用CellMouseDoubleClick事件

建议:

    private void dgvProjectDetails_CellMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e)
    {
        int col = e.ColumnIndex;
        int row = e.RowIndex;

        DataGridView dgv = sender as DataGridView;
        if (dgv == null)
            return;

        var cell = dgv[col, row];

        if (cell != null)
        {
            DataGridViewRow row = cell.OwningRow;
            frmAddProjects ProjectDetail = new frmAddProjects(); //<= THIS must be created first

            ProjectDetail.projectid = row.Cells["ProjectID"].Value.ToString();
            ProjectDetail.businessname = row.Cells["BusinessName"].Value.ToString();
            ProjectDetail.contactperson = row.Cells["ContactPerson"].Value.ToString();
            ProjectDetail.phone = row.Cells["Phone"].Value.ToString();
            ProjectDetail.address = row.Cells["Address"].Value.ToString();
            ProjectDetail.createddate = row.Cells["CreatedDate"].Value.ToString();
            ProjectDetail.assignedto= row.Cells["AssignedTo"].Value.ToString();
            // etc.

            ProjectDetail.ShowDialog();
        }            
    }
private void dgvProjectDetails_CellMouseDoubleClick(对象发送方,DataGridViewCellMouseEventArgs e)
{
int col=e.ColumnIndex;
int row=e.RowIndex;
DataGridView dgv=作为DataGridView的发送方;
如果(dgv==null)
回来
var单元格=dgv[列,行];
如果(单元格!=null)
{
DataGridViewRow行=cell.OwningRow;

frmAddProjects ProjectDetail=新frmAddProjects();//我在各种论坛中搜索,但没有找到正确的步骤。我遵循了,但没有帮助。我对您提出的问题给出了答案,但您的问题可以改进。例如,您应该显示调用fillRecord的位置,并显示如何在frmAddPRojects中声明字段/属性。此外,您没有解释exa确切地说,你遇到了什么问题,比如当你尝试你的代码、异常等时,你得到了什么样的结果。还有一件事…你在问题标题中问的问题和你在问题文本中问的问题是不同的事情…谢谢你的建议。字段是公共的。我使用了你的代码,但它没有doubleclick上显示了另一个表单,并使用了private void dgvProjectDetails_CellContentClick(object sender,DataGridViewCellEventArgs e)中的代码,但它仅显示表单,但无法检索文本框中的数据。请帮助。如果未显示ProjectDetail表单,则是因为((DataGridView)sender)[col row]正在返回null…Ups!!!我的错误。这是一个DataGridViellCell对象。我将更改代码。@krishnawlsol,稍作更改,现在应该可以工作了。:)此代码在数据网格单元格更改事件上不起作用,因为“事件不同”。双击单元格是一回事,更改单元格内容是另一回事Hello Jauch,感谢您的帮助。它解决了问题。下面是您建议的解决方案。我忘记调用fillRecords.ProjectDetail.Show();ProjectDetail.fillRecord();我名声不好,很抱歉我不能投票,但你帮了我很大的忙。谢谢你的帮助。