zoukankan      html  css  js  c++  java
  • C#DataGridView控件60招

    1. DataGridView当前的单元格属性取得、变更

    2. DataGridView编辑属性

    3. DataGridView最下面一列新追加行非表示

    4. DataGridView判断当前选中行是否为新追加的行

    5. DataGridView删除行可否设定

    6. DataGridView行列不表示和删除

    1.当前的单元格属性取得、变更

    [C#]

    '当前选中单元的值

    Console.WriteLine(DataGridView1.CurrentCell.Value)

    '当前列的Index值

     Console.WriteLine(DataGridView1.CurrentCell.ColumnIndex)

    '当前单元的行Index值

    Console.WriteLine(DataGridView1.CurrentCell.RowIndex)

    '将控件中(0, 0)处的值,赋给当前单元格.

    DataGridView1.CurrentCell =DataGridView1[0, 0]

    2.DataGridView编辑属性

    全部单元格编辑属性

    [C#]

    'DataGridView1只读属性

    DataGridView1.ReadOnly = True

    指定行列单元格编辑属性

    [C#]

    DataGridView1.Columns[1]ReadOnly = True

    DataGridView1.Rows[2].ReadOnly = True

    DataGridView1[0, 0].ReadOnly = True

    根据条件判断单元格的编辑属性

    下例中column2的值是True的时候,Column1设为可编辑

     [C#]

    代码
    private void DataGridView1_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e)
            {
                
    if (this.DataGridView1.Columns[e.ColumnIndex].Name.ToString().Equals("Column2"))
                {
                    
    if (DataGridView1["Column2", e.RowIndex].Value.ToString().ToLower().Equals("true"))
                    {
                        DataGridView1[
    "Column1", e.RowIndex].ReadOnly = false;
                    }
                    
    else
                    {
                        DataGridView1[
    "Column1", e.RowIndex].ReadOnly = true;
                    }
                }
            }

    3.DataGridView最下面一列新追加行非表示

    [C#]

    DataGridView1.AllowUserToAddRows = False

    4.判断当前选中行是否为新追加的行

    [C#]

    if (DataGridView1.CurrentRow.IsNewRow)
    {
           Console.WriteLine("当前行,是新添加的行");
    }
           else
    {
           Console.WriteLine("当前行,不是新添加的行");
    }

    5. DataGridView删除行可否设定

    [C#]

    DataGridView1.AllowUserToDeleteRows = False

    根据条件判断当前行是否要删除

    [C#]

    代码
     1 private void DataGridView1_UserDeletingRow(object sender, DataGridViewRowCancelEventArgs e)
     2         {
     3 
     4 
     5 
     6             if (MessageBox.Show("确定要删除吗?""删除确认", MessageBoxButtons.OKCancel, MessageBoxIcon.Question).Equals(System.Windows.Forms.DialogResult.OK))
     7             {
     8 
     9             }
    10             else
    11             {
    12                 e.Cancel = true;
    13             }
    14         }

    6. DataGridView行列不表示和删除

    行列不表示

    [C#]

    'DataGridView1的第一列不表示

    DataGridView1.Columns[0].Visible = False

    'DataGridView1的第一行不表示

    DataGridView1.Rows[0].Visible = False

    行列表头部分不表示

    [C#]

    DataGridView1.ColumnHeadersVisible = False

    DataGridView1.RowHeadersVisible = False

    指定行列删除

    [C#]

    DataGridView1.Columns.Remove("Column1")

    DataGridView1.Columns.RemoveAt(0)

    DataGridView1.Rows.RemoveAt(0)

    选择的行列删除(多行列)

    [C#]

    'DataGridView1删除选中的行

    foreach (DataGridViewRow r in DataGridView1.SelectedRows)
                {
                    if (!r.IsNewRow)
                    {
                        DataGridView1.Rows.Remove(r);
                    }
                }

    <!--[endif]-->

    7. DataGridView行列宽度高度设置为不能编辑

    8. DataGridView行高列幅自动调整

    9. DataGridView指定行列冻结

    10. DataGridView列顺序变更可否设定

    11. DataGridView行复数选择

    12. DataGridView选择的行、列、单元格取得

    7. DataGridView行列宽度高度设置为不能编辑

     [C#]

    'DataGridView1的列的宽设为不能编辑

    DataGridView1.AllowUserToResizeColumns = False

    'DataGridView1的行的高设为不能编辑

    DataGridView1.AllowUserToResizeRows = False

    指定行列宽度高度设置为不能编辑

    [C#]

    'DataGridView1指定列宽度设置为不能编辑

    DataGridView1.Columns[0].Resizable = DataGridViewTriState.False

    'DataGridView1指定行高度设置为不能编辑

    DataGridView1.Rows[0].Resizable = DataGridViewTriState.False

    列幅行高最小值设定

    [C#]

    '列幅最小值设定为100

    DataGridView1.Columns[0].MinimumWidth = 100

    '行高最小值设定为50

    DataGridView1.Rows[0].MinimumHeight = 50

    行列表头部分行高列幅设置为不能编辑

    [C#]

    行列表头部分行高设置为不能编辑  

    DataGridView1.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing

    行列表头部分列幅设置为能编辑

    DataGridView1.RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.EnableResizing

    8. DataGridView行高列幅自动调整

    [C#]

    根据内容,列幅自动调整

    DataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells

    根据内容,行高自动调整

    DataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells

    表头部分行高列幅自动调整

    [C#]

    '表头列高自動調整

    DataGridView1.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize

    '表头行幅自動調整

    DataGridView1.RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders

    指定列自动调整

    [C#]

    '指定列的列幅自動調整

    DataGridView1.Columns[0].AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells

    9. DataGridView指定行列冻结

    列冻结(当前列以及左侧做所有列)

    [C#]

    'DataGridView1的左側2列固定

    DataGridView1.Columns[1].Frozen = True

    行冻结(当前行以及上部所有行)

    [C#]

    'DataGridView1的上部2行固定

    DataGridView1.Rows[2].Frozen = True

    指定单元格冻结(单元格所在行上部分所有行,列左侧所有列)

    [C#]

    DataGridView1[0, 0]. Frozen = True

    10. DataGridView列顺序变更可否设定

    [C#]

    'DataGridView1的列的位置设定为允许改变

    DataGridView1.AllowUserToOrderColumns = True

    但是如果列冻结的情况下,冻结的部分不能变更到非冻结的部分。

    变更后列位置取得

    [C#]

    '取得列"Column1"現在的位置

    Console.WriteLine(DataGridView1.Columns["Column1"].DisplayIndex)

    '"Column1"移動到最前面

    DataGridView1.Columns["Column1"].DisplayIndex = 0

    11. DataGridView行复数选择

    不可选择多行

    [C#]

    'DataGridView1不可选择多行

    DataGridView1.MultiSelect = False

    单元格选择的时候默认为选择整行

    [C#]

    '单元格选择的时候默认为选择整行

    DataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect

    12. DataGridView选择的行、列、单元格取得

    [C#]

    '输出选择的单元格位置

    Console.WriteLine("选择的单元格位置")

    foreach (DataGridViewCell c in DataGridView1.SelectedCells)

    {

         Console.WriteLine(c.ColumnIndex + "," + c.RowIndex);

    }

    '输出选择的行位置

    Console.WriteLine("选择的行位置")

    foreach (DataGridViewRow r in dgvBeforeStep.SelectedRows)

    {

         Console.WriteLine(r.Index);

    }

    ''输出选择的列位置

    foreach (DataGridViewColumn col in dgvBeforeStep.SelectedColumns)

    {

        Console.WriteLine(col.Index);

    }

    指定行、列、单元格取得

    [C#]

    '(0, 0)的选中

    DataGridView1[0, 0].Selected = True

    'Index1的行选中

    DataGridView1.Rows[1].Selected = True

    'Index2的列选中

    DataGridView1.Columns[2].Selected = True

    <!--[endif]-->

    13. DataGridView指定单元格是否表示

    14. DataGridView表头部单元格取得

    15. DataGridView表头部单元格文字列设定

    16. DataGridView选择的部分拷贝至剪贴板

    17.DataGridView粘贴

    18. DataGridView单元格上ToolTip表示设定(鼠标移动到相应单元格上时,弹出说明信息)

    13. DataGridView指定单元格是否表示

    [C#]

    if (DataGridView1 [2,0].Displayed&& DataGridView1 [2,0].Visible)
    {
        DataGridView1.CurrentCell 
    = DataGridView1[2,0];
    }

    14. DataGridView表头部单元格取得

    [C#]

    'DataGridView1第一列表头改变

    DataGridView1.Columns[0].HeaderCell.Value = "第一列"

    'DataGridView1第一行表头改变

    DataGridView1.Rows[0].HeaderCell.Value = "第一行"

    'DataGridView1左上角单元格值改变

    DataGridView1.TopLeftHeaderCell.Value = "左上"

    15. DataGridView表头部单元格文字列设定

    更改列Header表示文字列

    [C#]

    'DataGridView1改变第一列头部单元格文字

    DataGridView1.Columns[0].HeaderText = "第一列"

    更改行Header表示文字列

    [C#]

    'DataGridView1行的头部单元格为序号

    for (int i = 0; i < DataGridView1.Rows.Count-1; i++)
    {
        DataGridView1.Rows[i].HeaderCell.Value
    =i.ToString();
    }

    '行的宽度自动调节

    DataGridView1.AutoResizeRowHeadersWidth( DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders)

    最左上Header单元格文字列

    [C#]

    '修改最左上单元格

    DataGridView1.TopLeftHeaderCell.Value = "/"

    16. DataGridView选择的部分拷贝至剪贴板

    拷贝模式设定

    [C#]

    DataGridView1.ClipboardCopyMode = DataGridViewClipboardCopyMode.EnableWithoutHeaderText

    选中部分拷贝

    [C#]

    Clipboard.SetDataObject(DataGridView1.GetClipboardContent())

    17.DataGridView粘贴

    [C#]

    代码
    if (DataGridView1.CurrentCell.Value == null)
    {
        
    return;
    }
    int insertRowIndex = DataGridView1.CurrentCell.RowIndex;
    string pasteText=Clipboard.GetText();
    if(string.IsNullOrEmpty(pasteText))
    {
        
    return;
    }
    string[] lines=pasteText.Split('\r');
    bool isHeader=true;
    foreach(string line in lines)
    {    
        
    if(isHeader)
        {
            isHeader
    =false;
        }
        
    else
        {
            
    string[] vals=line.Split('\t');
            
    if (vals.Length - 1 != DataGridView1.ColumnCount)
            {
                
    throw new ApplicationException("列数错误");
            }
            DataGridViewRow row 
    = DataGridView1.Rows[insertRowIndex];
            row.HeaderCell.Value
    =vals[0];
            
    for(int i=0;i<row.Cells.Count-1;i++)
            {
                row.Cells[i].Value
    =vals[(i+1)];
            }
            insertRowIndex
    +=1;
        }
    }

    18. DataGridView单元格上ToolTip表示设定(鼠标移动到相应单元格上时,弹出说明信息)

    [C#]

    指定单元格

    DataGridView1[0, 0].ToolTipText = "指定单元格"

    指定列

    DataGridView1.Columns[0].ToolTipText = "指定列"

    指定行

    DataGridView1.Rows[0].HeaderCell.ToolTipText = "指定行"

    CellToolTipTextNeeded事件,在多个单元格使用相同的ToolTips的时候,可以用该事件,下例为显示当前单元格的行号和列号

    [C#]

    'CellToolTipTextNeeded事件

    private void DataGridView1_CellToolTipTextNeeded(object sender, DataGridViewCellToolTipTextNeededEventArgs e)
    {
        e.ToolTipText 
    = e.RowIndex.ToString() + "," + e.ColumnIndex.ToString();
    }
  • 相关阅读:
    Microjs: 超棒的迷你框架和迷你类库搜罗工具
    本周推荐7款CSS3实现的动态特效
    Bootstrap3.1开发的响应式个人简历模板
    10分钟,利用canvas画一个小的loading界面
    四款超棒的jQuery数字化签名插件
    搜索引擎优化网页设计:最佳实践
    推荐超实用的8款jQuery插件
    9款HTML5实现的超酷特效
    想成为程序猿?28个在线学习网站让你变身齐天大圣!
    推荐7款超棒的单页面网站设计模板。关键是!免费!!
  • 原文地址:https://www.cnblogs.com/hdl217/p/1717125.html
Copyright © 2011-2022 走看看