zoukankan      html  css  js  c++  java
  • 二、winForm-DataGridView操作——DataGridView 操作、属性说明

      注册:Form加载窗体代码

         /// <summary>
        /// 窗体加载Form1
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Form1(object sender, EventArgs e)
            {
                //单元格内容点击
                this.dataGridView1.CellContentClick += DataGridView1_CellContentClick;
                //单元格点击
                this.dataGridView1.CellClick += DataGridView1_CellClick;
    
                //选中进入编辑状态事件
                this.dataGridView1.CellBeginEdit += DataGridView1_CellBeginEdit;
    
                //用户是否可以调整所有列的列宽
                this.dataGridView1.AllowUserToResizeColumns = false;
    
                //用户是否可以调整所有行的行高
                this.dataGridView1.AllowUserToResizeRows = false;
    
                //禁止指定行或者列的Resize
                this.dataGridView1.Columns[0].Resizable = DataGridViewTriState.False;
                this.dataGridView1.Rows[0].Resizable = DataGridViewTriState.False;
    
                //开启提示
                this.dataGridView1.ShowCellToolTips = true;
                dataGridView1[1, 1].ToolTipText = "测试下面的CellToolTipTextNeeded";
    
                //在需要单元格的工具提示文本时发生。
                //this.dataGridView1.CellToolTipTextNeeded += DataGridView1_CellToolTipTextNeeded;
    
                //this.contextMenuStrip1自己添加控件绑定即可
                dataGridView1.ContextMenuStrip = this.contextMenuStrip1;
    
                //ContextMenuStrip设定 CellContextMenuStripNeeded
                this.dataGridView1.CellContextMenuStripNeeded += DataGridView1_CellContextMenuStripNeeded;
    
                //CellFormatting 事件处理方法
                this.dataGridView1.CellFormatting += DataGridView1_CellFormatting;
    
                //CellParsing 事件处理方法
                this.dataGridView1.CellParsing += DataGridView1_CellParsing;
            }    
    Form加载注册事件

      一、DataGridView 取得或者修改当前单元格的内容:

        核心:DataGridView1.CurrentCell.Value;

        1、当前单元格的Index:

              列:DataGridView1.CurrentCell.ColumnIndex;

                行:DataGridView1.CurrentCell.RowIndex        

        2、当前单元格位置:DataGridView.CurrentCellAddress//结果:{X,Y}

              列:DataGridView.CurrentCellAddress.Y

              行:DataGridView.CurrentCellAddress.X

        第2种方法可以避免或者取消共享事件。

            /// <summary>
            /// 单元格点击事件(在单元格的任何部分被单击时发生)
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void DataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
            {
                //获取当前点击的行列索引
                MessageBox.Show(""+e.RowIndex + "行,第"+ e.ColumnIndex+"列的值:"+dataGridView1.CurrentCell.Value);
                //获取当前点击的位置{X=?,Y=?}
                MessageBox.Show("位置:" + dataGridView1.CurrentCellAddress.ToString());
                // 可以取消激活的单元格
                dataGridView1.CurrentCell.Value = null;
            }
    
            /// <summary>
            /// 单元格内容点击事件(在单元格中的内容被单击时发生)
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void DataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
            {
                //获取当前点击的行列索引
                MessageBox.Show(""+e.RowIndex+"行,第"+e.ColumnIndex+"列的值:" + dataGridView1.CurrentCell.Value);
                //获取当前点击的位置{X=?,Y=?}
                MessageBox.Show("位置:"+dataGridView1.CurrentCellAddress.ToString());
                // 可以取消激活的单元格
                dataGridView1.CurrentCell.Value = null;
            }
        
    View Code

      二、DataGridView 设定单元格只读(ReadOnly/EditMode)

        核心:DataGridView1.ReadOnly = true;

           DataGridView1.EditMode= DataGridViewEditMode.EditProgrammatically

        1、指定单元格只读:

             所有:DataGridView1[columnIndex,rowIndex ].ReadOnly = true;

              列:DataGridView1.Columns[columnIndex].ReadOnly = true;

              行:DataGridView1.Rows[rowIndex].ReadOnly = true;

        2、EditMode

          //不能手动编辑单元格的内容。调用 DataGridView.BeginEdit 方法,使单元格进入编辑模式进行编辑

          DataGridView1.EditMode= DataGridViewEditMode.EditProgrammatically;

        3、CellBeginEdit 

          //CellBeginEdit 事件来取消单元格的编辑

            /// <summary>
            /// 在为选定的单元格启动编辑模式时发生
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void DataGridView1_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e)
            {
                DataGridView dgv = (DataGridView)sender;
                if (!(string.IsNullOrEmpty(dgv["Id", e.RowIndex].Value.ToString())))
                {
                    e.Cancel = true;
                }
            }
    View Code

       

      三、DataGridView 禁止列或者行的Resize

        核心:AllowUserToResizeColumns/AllowUserToResizeRows/Resizable

        1、所有的行列禁止

               列:  this.dataGridView1.AllowUserToResizeColumns = false;

               行: this.dataGridView1.AllowUserToResizeRows = false;

        2、指定行列Resizable      

               列: this.dataGridView1.Columns[0].Resizable = DataGridViewTriState.False;
               行: this.dataGridView1.Rows[0].Resizable = DataGridViewTriState.False;

        3、列宽和行高的最小值的设定 MinimumWidth /MinimumHeight 

               列:DataGridView1.Columns[0].MinimumWidth = 100;

               行:DataGridView1.Rows[0].MinimumHeight = 50;

        4、禁止用户改变行头的宽度以及列头的高度

               列:DataGridView1.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing;

               行:DataGridView1.RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.EnableResizing; 

      四、DataGridView 列宽和行高自动调整的设定

        核心:DataGridViewAutoSizeRowsMode/DataGridViewAutoSizeColumnsMode

        1、设定行高和列宽自动调整

              列:DataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;

              行:DataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells; 

        2、第一列自动调整 

              列:DataGridView1.Columns[0].AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells;

        3、设定列头的高度和行头的宽度自动调整

              列:DataGridView1.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize;

              行:DataGridView1.RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders;

      五、DataGridView 冻结列或行

        核心:DataGridViewColumn.Frozen

        1、列冻结:DataGridViewColumn.Frozen 属性为 True 时,

              该列左侧的所有列被固定, 横向滚动时固定列不随滚动条滚动而左右移动

        2、行冻结:DataGridViewRow.Frozen 属性为 True 时,

              该行上面的所有行被固定, 纵向滚动时固定行不随滚动条滚动而上下移动。

          列:DataGridView1.Columns[1].Frozen = true;

          行:DataGridView1.Rows[2].Frozen = true;

      六、 DataGridView 列顺序的调整

        设定DataGridView 的AllowUserToOrderColumns 为 True 的时候, 用户可以自由调整列的顺序。

        当用户改变列的顺序的时候,其本身的index不会改变,但是DisplayIndex改变了,

        可以在代码中通过DisplayIndex 来改变列的顺序,顺序改变时候会引发ColumnDisplayIndexChanged事件

      七、DataGridView 剪切板的操作

        待研究补充

      八、DataGridView 单元格的ToolTip的设置

        1、ToolTip内容

        核心:DataGridView.ShowCellToolTips = True 的情况下, 单元格的 ToolTip 可以表示出来。

           对于单元格窄小,无法完全显示的单元格, ToolTip 可以显示必要的信息

          ALL:  DataGridView1[0, 0].ToolTipText = "该单元格的内容不能修改";

          列头:DataGridView1.Columns[0].ToolTipText = "该列只能输入数字";

          行头:DataGridView1.Rows[0].HeaderCell.ToolTipText = "该行单元格内容不能修改";

        2、CellToolTipTextNeeded 事件

        在批量的单元格的 ToolTip 设定的时候,单个指定那么设定的效率比较低,

        这时候可以利用CellToolTipTextNeeded 事件。当单元格的 ToolTipText 变化的时候也会引发该事件。

        但是,当DataGridView的DataSource被指定且VirualMode=True的时候,该事件不会被引发。

            /// <summary>
            /// 在需要单元格的工具提示文本时发生。
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void DataGridView1_CellToolTipTextNeeded(object sender, DataGridViewCellToolTipTextNeededEventArgs e)
            {
                MessageBox.Show(e.ToolTipText.ToString());
            }
    CellToolTipTextNeeded

      九、DataGridView 的右键菜单(ContextMenuStrip) 

        核心:ContextMenuStrip、 CellontextMenuStripNeeded、RowContextMenuStripNeeded

        DataGridView, DataGridViewColumn, DataGridViewRow, DataGridViewCell 有 ContextMenuStrip 属性。 

        DataGridViewColumn 的 ContextMenuStrip 属性设定了 除了列头以外的单元格的右键菜单。

        DataGridViewRow 的 ContextMenuStrip 属性设定了除了行头以外的单元格的右键菜单。

        DataGridViewCell的 ContextMenuStrip 属性设定了指定单元格的右键菜单

        1、DataGridView 的ContextMenuStrip 设定

          DataGridView1.ContextMenuStrip = this.ContextMenuStrip1;

        2、列的 ContextMenuStrip 设定     

          DataGridView1.Columns[0].ContextMenuStrip = this.ContextMenuStrip2;

        3、 列头的ContextMenuStrip 设定  

          DataGridView1.Columns[0].HeaderCell.ContextMenuStrip = this.ContextMenuStrip2;

        4、 行的 ContextMenuStrip 设定 

          DataGridView1.Rows[0].ContextMenuStrip = this.ContextMenuStrip3;

        5、 单元格的 ContextMenuStrip 设定

           6、CellContextMenuStripNeeded 

          在DataGridView使用了DataSource绑定而且是VirtualMode的时候,该事件将不被引发。

        7、RowContextMenuStripNeeded

            /// <summary>
            /// 在需要单元格的快捷菜单时发生。CellContextMenuStripNeeded  
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void DataGridView1_CellContextMenuStripNeeded(object sender, DataGridViewCellContextMenuStripNeededEventArgs e)
            {
                e.ContextMenuStrip = this.contextMenuStrip1;
            }
    CellContextMenuStripNeeded

      十、DataGridView 单元格表示值的自定义

        核心:CellFormatting

        1、//CellFormatting 事件处理方法   

        CellFormatting事件的DataGridViewCellFormattingEventArgs对象的Value属性一开始保存着未被格式化的值。

        当Value属性被设定表示用的文本之后,把FormattingApplied属性做为True,告知DataGridView文本已经格式化完毕。

        如果不这样做的话,DataGridView会根据已经设定的Format,NullValue,DataSourceNullValue,FormatProvider属性会将Value属性会被重新格式化一遍。

            /// <summary>
            ///在单元格的内容需要设置格式以便于显示时发生 CellFormatting   
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void DataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
            {
                DataGridView dgv = (DataGridView)sender;
                // 如果单元格是“id”列的单元格
                if (dgv.Columns[e.ColumnIndex].Name == "Id" && e.Value is string)
                {
                    // 将单元格值改为大写
                    string str = e.Value.ToString();
                    e.Value = str.ToUpper();
                    // 应用该Format,Format完毕。
                    e.FormattingApplied = true;
                }
            }
    CellFormatting 事件处理方法

        十一、DataGridView 用户输入时,单元格输入值的设定

        核心:CellParsing 

        1、//CellParsing 事件处理方法

            /// <summary>
            /// CellParsing 事件处理方法
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void DataGridView1_CellParsing(object sender, DataGridViewCellParsingEventArgs e)
            {
                DataGridView dgv = (DataGridView)sender;
    
                //单元格列为“Id”时
                if (dgv.Columns[e.ColumnIndex].Name == "Id" && e.DesiredType == typeof(string))
                {
                    //将单元格值设为大写
                    e.Value = e.Value.ToString().ToUpper();
                    //解析完毕
                    e.ParsingApplied = true;
                }
            }
    CellParsing 事件处理方法

    参考文献:https://blog.csdn.net/u010655348/article/details/52952615 

    ==============================================

    ==============================================

  • 相关阅读:
    Linux三剑客之sed
    xcodebuild
    mac xcworkspace xcodebuild
    [转]Jenkins Xcode打包ipa
    ios批量打包
    ios打包
    ios 打包
    ios 尺寸
    Launch Screen在iOS7/8中的实现
    如何查看ipa包支持哪些cpu指令集
  • 原文地址:https://www.cnblogs.com/zhangne/p/9577646.html
Copyright © 2011-2022 走看看