如何给datagridview各列加上事件

时间:2022-05-15 14:48:18
我已经把datagridview格式化为三列,并且也绑定了数据, 但是如何给这三列加上不同的事件呢, 我看了一下只能设定颜色 还有 宽度 之类的,没有设定事件的地方.

10 个解决方案

#1


每一列你还要绑定什么事件??

#2


当用户在datagridview某一个列,输入一个编码,希望存货名称 跟 规格 两列自动出现内容,是需要一个事件的吧

#3


可以用e.columnindex判断
然后在程序中加入事件或者是方法

#4


有没有例子哦,那个e代表什么,不好意思,我基础是差了点

#5


不明白

#6


参考下面代码在CellEndEdit这个事件里面做就可以实现你想要的:
 private void GrdDantai_CellEndEdit(object sender, DataGridViewCellEventArgs e) {
            //開始ログ
            CmLog.Putlog(CmLogOutTo.Both, CmLogEventCd.Info, CmLogStatus.FuncIn, _myFormId, _myClassName +
                ":GrdDantai_CellEndEdit", "編集した後に、データの設定");
            string sTotalMsg = "";
            string sGrdHanteiValue = "";
 
            //画面に編集したの内容
            _DblCellEndEditValue = 
                Convert.ToInt64(this.GrdDantai.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString().Replace(",", ""));

            //画面に編集FLGの設定
            if (_DblCellBeginEditValue != _DblCellEndEditValue) {
                _FormOperationMode = LnConst.FormOperationMode.Modify;
            }

            //画面に編集した内容を月間募集人件数実績データセットに反映する
            _MdInNittBL.EditDataTable(
                e.ColumnIndex,
                _DblCellEndEditValue,
                this.GrdDantai.Rows[e.RowIndex].Cells[1].Value,
                ref _DtMonthNiitsei,
                Convert.ToInt64(this.GrdDantai.Rows[e.RowIndex].Cells[4].Value.ToString().Replace(",", "")),
                Convert.ToInt64(this.GrdDantai.Rows[e.RowIndex].Cells[5].Value.ToString().Replace(",", "")),
                Convert.ToInt64(this.GrdDantai.Rows[e.RowIndex].Cells[6].Value.ToString().Replace(",", "")),
                Convert.ToInt64(this.GrdDantai.Rows[e.RowIndex].Cells[7].Value.ToString().Replace(",", "")),
                ref sGrdHanteiValue,
                ref sTotalMsg);

            //画面に判定のデータを変更
            GrdDantai[0, e.RowIndex].Value = sGrdHanteiValue;
            GrdDantai[8, e.RowIndex].Value = sTotalMsg;

            //合計件数変更判定
            if (e.ColumnIndex == 4) {
                _KensuuGK = _KensuuGK - Convert.ToDecimal(_DblCellBeginEditValue) + 
                    Convert.ToDecimal(_DblCellEndEditValue);
            }

            //合計金額変更判定
            if (e.ColumnIndex == 7) {
                _KingakuGK = _KingakuGK - Convert.ToDecimal(_DblCellBeginEditValue) + 
                    Convert.ToDecimal(_DblCellEndEditValue);
            }

            //合計件数と合計金額のレコード長さをチェック
            CheckRekoto(_KensuuGK, _KingakuGK);
 
            //終了ログ
            CmLog.Putlog(CmLogOutTo.Both, CmLogEventCd.Info, CmLogStatus.FuncOut, _myFormId, _myClassName +
                ":GrdDantai_CellEndEdit", "");            
        }

#7


6楼MM是RB人????

#8


用单元格之类事件,看可以不

#9


直接在cellvaluechange事件里面写,判断是哪列可以看e.columindex

#10


不知道如何加是好,
 private void Form1_Load(object sender, EventArgs e)
        {
            e.
        }
我按下e.后面没有提示columindex, 不好意思我知道是我的错,但是我不知道该如何纠正,各位帮忙吧

#1


每一列你还要绑定什么事件??

#2


当用户在datagridview某一个列,输入一个编码,希望存货名称 跟 规格 两列自动出现内容,是需要一个事件的吧

#3


可以用e.columnindex判断
然后在程序中加入事件或者是方法

#4


有没有例子哦,那个e代表什么,不好意思,我基础是差了点

#5


不明白

#6


参考下面代码在CellEndEdit这个事件里面做就可以实现你想要的:
 private void GrdDantai_CellEndEdit(object sender, DataGridViewCellEventArgs e) {
            //開始ログ
            CmLog.Putlog(CmLogOutTo.Both, CmLogEventCd.Info, CmLogStatus.FuncIn, _myFormId, _myClassName +
                ":GrdDantai_CellEndEdit", "編集した後に、データの設定");
            string sTotalMsg = "";
            string sGrdHanteiValue = "";
 
            //画面に編集したの内容
            _DblCellEndEditValue = 
                Convert.ToInt64(this.GrdDantai.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString().Replace(",", ""));

            //画面に編集FLGの設定
            if (_DblCellBeginEditValue != _DblCellEndEditValue) {
                _FormOperationMode = LnConst.FormOperationMode.Modify;
            }

            //画面に編集した内容を月間募集人件数実績データセットに反映する
            _MdInNittBL.EditDataTable(
                e.ColumnIndex,
                _DblCellEndEditValue,
                this.GrdDantai.Rows[e.RowIndex].Cells[1].Value,
                ref _DtMonthNiitsei,
                Convert.ToInt64(this.GrdDantai.Rows[e.RowIndex].Cells[4].Value.ToString().Replace(",", "")),
                Convert.ToInt64(this.GrdDantai.Rows[e.RowIndex].Cells[5].Value.ToString().Replace(",", "")),
                Convert.ToInt64(this.GrdDantai.Rows[e.RowIndex].Cells[6].Value.ToString().Replace(",", "")),
                Convert.ToInt64(this.GrdDantai.Rows[e.RowIndex].Cells[7].Value.ToString().Replace(",", "")),
                ref sGrdHanteiValue,
                ref sTotalMsg);

            //画面に判定のデータを変更
            GrdDantai[0, e.RowIndex].Value = sGrdHanteiValue;
            GrdDantai[8, e.RowIndex].Value = sTotalMsg;

            //合計件数変更判定
            if (e.ColumnIndex == 4) {
                _KensuuGK = _KensuuGK - Convert.ToDecimal(_DblCellBeginEditValue) + 
                    Convert.ToDecimal(_DblCellEndEditValue);
            }

            //合計金額変更判定
            if (e.ColumnIndex == 7) {
                _KingakuGK = _KingakuGK - Convert.ToDecimal(_DblCellBeginEditValue) + 
                    Convert.ToDecimal(_DblCellEndEditValue);
            }

            //合計件数と合計金額のレコード長さをチェック
            CheckRekoto(_KensuuGK, _KingakuGK);
 
            //終了ログ
            CmLog.Putlog(CmLogOutTo.Both, CmLogEventCd.Info, CmLogStatus.FuncOut, _myFormId, _myClassName +
                ":GrdDantai_CellEndEdit", "");            
        }

#7


6楼MM是RB人????

#8


用单元格之类事件,看可以不

#9


直接在cellvaluechange事件里面写,判断是哪列可以看e.columindex

#10


不知道如何加是好,
 private void Form1_Load(object sender, EventArgs e)
        {
            e.
        }
我按下e.后面没有提示columindex, 不好意思我知道是我的错,但是我不知道该如何纠正,各位帮忙吧