网格视图在c#

时间:2016-09-26 00:50:55

标签: c# visual-studio-2013

我的项目中有一些表单和一些自定义用户控件(包含dataGridView的自定义下拉窗口)。在表单(采购订单)中有一个dataGridView控件,当单击一个单元格时,这个自定义下拉窗口会出现,当选择一个在该下拉窗口中的行或单击ENTER键这些值(即gridview行中的单元格值)sholud移动到FORM的上一个网格视图。我试过这个,不能得到预期的输出......任何一个帮助......

自定义用户控件中的部分代码: -

#region Declarations
    public string grdItmName;
    public string grdItmDisrption;
    public string grdItmCata;
    public string grdItmPrice;
    #endregion

    #region prop
    public string gridfield1
    {
        get
        {
            return grdItmName;
        }
        set { grdItmName = value; }
    }

    public string gridfield2
    {
        get
        {
            return grdItmDisrption;
        }
        set { grdItmDisrption = value; }
    }
    public string gridfield3
    {
        get
        {
            return grdItmCata;
        }
        set { grdItmCata = value; }
    }
    public string gridfield4
    {
        get
        {
            return grdItmPrice;
        }
        set { grdItmPrice = value; }
    }
#endregion
private void gridItemlist_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.KeyCode.Equals(Keys.Enter))
        {

            try
            {
                grdItmName = gridItemlist.SelectedRows[0].Cells[0].Value.ToString();
                grdItmDisrption = gridItemlist.SelectedRows[0].Cells[1].Value.ToString();
                grdItmCata = gridItemlist.SelectedRows[0].Cells[2].Value.ToString();
                grdItmPrice = gridItemlist.SelectedRows[0].Cells[3].Value.ToString();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }


}

FORM网格视图的代码段: -

private void gridPrchaseOrder_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)

{


customDropDown.Show();
customDropDown.BringToFront();`// display in front of other controls`
customDropDown.Select();
customDropDown.Location = gridPrchaseOrder.PointToScreen(gridPrchaseOrder.GetCellDisplayRectangle(e.ColumnIndex, e.RowIndex, false).Location);




        try
        {   
          int n = gridPrchaseOrder.Rows.Add();
          gridPrchaseOrder.Rows[n].Cells[0].Value = customDropDown.gridfield1;
            gridPrchaseOrder.Rows[n].Cells[1].Value = customDropDown.gridfield2;
            gridPrchaseOrder.Rows[n].Cells[2].Value = customDropDown.gridfield3;
            gridPrchaseOrder.Rows[n].Cells[3].Value = customDropDown.gridfield4;
            customDropDown.Focus();
        }
        catch (Exception ex) { MessageBox.Show(ex.Message); }

    }    

1 个答案:

答案 0 :(得分:0)

用户/自定义控件中的一个观察结果删除上面显示的代码并声明名称如下所示的属性。您不需要gridfield1,gridfield2,gridfield3和gridfield4。拥有这样的变量名称并不是一个好习惯。

Function

现在使用表单代码

public string grdItmName { get; set; }
public string grdItmDisrption { get; set; }
public string grdItmCata { get; set; }
public string grdItmPrice { get; set; }