当前位置:跳过导航链接计算机毕业设计首页 : 技术应用 : 详细内容

DataGridView控件使用技巧

来源:本站原创 作者:管理员 添加时间:2011-06-25 点击数:2224

1、相关介绍:

本文介绍C#Winform中关于DataGridView控件的一些使用技巧,仅供参看:

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

代码:

[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. DataGridView判断当前选中行是否为新追加的行

代码:

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

5. DataGridView删除行可否设定

代码:

[C#]

 DataGridView1.AllowUserToDeleteRows = False

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

[C#]

代码
 private void DataGridView1_UserDeletingRow(object sender, DataGridViewRowCancelEventArgs e)
          {
              if (MessageBox.Show("确定要删除吗?", "删除确认", MessageBoxButtons.OKCancel, MessageBoxIcon.Question).Equals(System.Windows.Forms.DialogResult.OK))
              {
 
              }
              else
              {
                  e.Cancel = true;
              }
          }

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);
    }
       }

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

 'Index为1的行选中

 DataGridView1.Rows[1].Selected = True

 'Index为2的列选中

 DataGridView1.Columns[2].Selected = True

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[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();
 }

19. 设置DataGridView的行头和文本居中

代码:

设置ColumnHeadersDafaultCellStyle属性的Alignment为MiddleCenter(行头居中)
设置DefalutCellStyle属性的Alignment为MiddleCenter(文本居中)

<责任编辑:计算机毕业设计网(http://www.xiaoniu168.com)>

第1页

【联系方式】

【本站信誉】

用心做计算机毕业设计论文网