c#winform中gridview单元格增加临时按钮

您所在的位置:网站首页 gridview添加按钮事件 c#winform中gridview单元格增加临时按钮

c#winform中gridview单元格增加临时按钮

2023-09-13 03:30| 来源: 网络整理| 查看: 265

在实际应用中我们总会遇到在某一个单元格输入值的时候,通过下拉框,因为选择项太多,很不方便,这时就需要弹出对话框中去操作选择输入的值。这时,我们就需要在单元格中放置一个按钮,通过按钮来弹出窗体,进行选择。依照以下步骤可以完成这个功能。

1、创建加入的按钮要实现的弹出对话框功能

private  PayMethod_Click(object sender, EventArgs e)

{

         FrmPayMethodSelect frmPMS=new FrmPayMethodSelect(); //支付方式选择弹出框

         if(frmPMS.ShowDialog()==System.Windows.Forms.DialogResult.OK)

         {

                 paymethod=frmPMS.PayMethod;

                 dgvPay.Rows[selectindex].Cells["code"]=paymethod;

         }

}

 

2、写一个过程用于在单元格中创建按钮,并加载显示。

        Button CreateButton(DataGridView dgv, DataGridViewCellCancelEventArgs e, EventHandler btnhandler, string code)         {             System.Windows.Forms.Button btn = new System.Windows.Forms.Button();//创建Buttonbtn                btn.Text ="...";//设置button显示文字                btn.Font = new System.Drawing.Font("Arial", 9);//设置文字格式   字体及大小             btn.Visible = true;//设置控件允许显示                btn.BackColor = Color.Silver; //颜色             btn.FlatStyle = FlatStyle.Standard;//外观样式             btn.Width = dgv.GetCellDisplayRectangle(e.ColumnIndex,                             e.RowIndex, true).Height;//获取单元格高并设置为btn的宽                btn.Height = dgv.GetCellDisplayRectangle(e.ColumnIndex,                             e.RowIndex, true).Height;//获取单元格高并设置为btn的高                btn.Click += btnhandler;  //设置按钮事件             btn.Name = "dgvBtn" + code;

            selectindex=e.RowIndex;//全局变量,保存选中行号             dgv.Controls.Add(btn); //将按钮增加显示到单元格中             btn.Location = new System.Drawing.Point(                 ((dgv.GetCellDisplayRectangle(e.ColumnIndex, e.RowIndex, true).Right) - (btn.Width)),                 dgv.GetCellDisplayRectangle(e.ColumnIndex, e.RowIndex, true).Y);//设置btn显示位置   

            return btn;         }

3、编写grid的CellBeginEdit事件,当进入单元格编辑状态 显示按钮

private void dgvPay_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e)

{             string code = dgvPay.Rows[e.RowIndex].Cells["code"].Value.ToString();//判断条件

            if (type.IndexOf("D") >= 0)             {                 this.dgvDept.Controls.Clear();//移除所有控件 

                if (e.RowIndex == 0)                 {                     return;                 }                                  //支付方式                 if (code.Equals("PayMethod"))                 {                     CreateButton(dgvDept, e, PayMethod_Click, code); //创建按钮

                 }             }

}



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3