C# DataGridView中ComboBox下拉更改事件

43 篇文章 1 订阅


对于C#的软件工程师来说使用DataGridView控件的频率是不低的,在DataGridView中加入按钮、下拉菜单也是比较频繁,那么如何对加入的按钮、下拉菜单添加事件和事件处理呢?

下面的Demo是针对下拉菜单如何添加和处理事件

 

该Demo实现下拉切换班级,实现班主任和名次自动刷新功能,班级下拉选择后触发事件。

主界面


直接编辑列完成的四列,第二列的班级为DataGridViewComboBoxColumn类型,在Items集合中添加四个班级,如下图



代码:

using System;

usingSystem.Collections.Generic;

usingSystem.ComponentModel;

using System.Data;

usingSystem.Drawing;

using System.Linq;

using System.Text;

usingSystem.Windows.Forms;

 

namespace 各种Demo

{

    public partial class DataGridView中ComboBox下拉更改事件 : Form

    {

 

        /// <summary>

        /// 班级

        /// </summary>

        ComboBox gv_bjType;

 

        public DataGridView中ComboBox下拉更改事件()

        {

            InitializeComponent();

        }

        private void DataGridView中ComboBox下拉更改事件_Load(object sender, EventArgs e)

        {

            for (int i = 0; i < 6; i++)

            {

                dgv.Rows.Add();

                dgv[0,i].Value=i+1;//班级为DataGridViewComboBoxColumn类型,值在编辑列的Items中写好

            }

        }

 

        private voiddgv_EditingControlShowing(object sender,DataGridViewEditingControlShowingEventArgs e)

        {

            //判断相应的列

            if (dgv.CurrentCell.ColumnIndex ==1 && dgv.CurrentCell.RowIndex !=-1)

            {

                gv_bjType = e.Control asComboBox;

                //每次注册事件的时候先移除事件,避免不断被递归调用

                gv_bjType.SelectedIndexChanged-= new EventHandler(gv_bjType_SelectedIndexChanged);

                gv_bjType.SelectedIndexChanged+= new EventHandler(gv_bjType_SelectedIndexChanged);

            }

        }

        private void gv_bjType_SelectedIndexChanged(objectsender, EventArgs e)

        {

            switch (gv_bjType.Text)

            {

                case "计应091班":

                    dgv[2,dgv.CurrentCell.RowIndex].Value = "1班老师";

                    dgv[3,dgv.CurrentCell.RowIndex].Value = "第一名";

                    break;

                case "计应092班":

                    dgv[2,dgv.CurrentCell.RowIndex].Value = "2班老师";

                    dgv[3,dgv.CurrentCell.RowIndex].Value = "第二名";

                    break;

                case "计应093班":

                    dgv[2,dgv.CurrentCell.RowIndex].Value = "3班老师";

                    dgv[3,dgv.CurrentCell.RowIndex].Value = "第三名";

                    break;

                default:

                    dgv[2,dgv.CurrentCell.RowIndex].Value = "4班老师";

                    dgv[3,dgv.CurrentCell.RowIndex].Value = "第四名";

                    break;

            }

        }

 

    }

}

 

效果

 






其余事件同理.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值