首页 资讯 应用 高压 设计 行业 低压 电路图 关于

单片机

旗下栏目: PLC 嵌入式 单片机 DCS

DATAGRIDVIEW控制

单片机 | 发布时间:2018-05-30 | 人气: | #评论# | 本文关键字:C#,C
摘要:★ DataGridView 取得或者修改当前单元格的内容: 当前单元格指的是 DataGridView 焦点所在的单元格,它可以通过 DataGridView 对象的 CurrentCell 属性取得。如果当前单元格不存在的时候,返回Nothing(

★ DataGridView    取得或者修改当前单元格的内容:
当前单元格指的是 DataGridView 焦点所在的单元格,它可以通过 DataGridView 对象的 CurrentCell 属性取得。如果当前单元格不存在的时候,返回Nothing(C#是null)
[C#]
// 取得当前单元格内容
Console.WriteLine(DataGridView1.CurrentCell.Value);
// 取得当前单元格的列 Index
Console.WriteLine(DataGridView1.CurrentCell.ColumnIndex);
// 取得当前单元格的行 Index
Console.WriteLine(DataGridView1.CurrentCell.RowIndex);
另外,使用 DataGridView.CurrentCellAddress 属性(而不是直接访问单元格)来确定单元格所在的行:DataGridView.CurrentCellAddress.Y 和列: DataGridView.CurrentCellAddress.X 。这对于避免取消共享行的共享非常有用。
当前的单元格可以通过设定 DataGridView 对象的 CurrentCell 来改变。可以通过 CurrentCell 来设定
DataGridView 的激活单元格。将 CurrentCell 设为 Nothing(null) 可以取消激活的单元格。
[C#]
// 设定 (0, 0)    为当前单元格
DataGridView1.CurrentCell = DataGridView1[0, 0];
在整行选中模式开启时,你也可以通过 CurrentCell 来设定选定行。
          /**////


          /// 向下遍历
          ///

          /// 
          /// 
          private void button4_Click(object sender, EventArgs e)
          ...{
              int row = this.dataGridView1.CurrentRow.Index + 1;
              if (row > this.dataGridView1.RowCount - 1)
                  row = 0;
              this.dataGridView1.CurrentCell = this.dataGridView1[0, row]; 
          }


          /**////


          /// 向上遍历
          ///

          /// 
          /// 
          private void button5_Click(object sender, EventArgs e)
          ...{
              int row = this.dataGridView1.CurrentRow.Index - 1;
              if (row < 0)
                  row = this.dataGridView1.RowCount - 1;
              this.dataGridView1.CurrentCell = this.dataGridView1[0, row]; 
          }
* 注意: this.dataGridView 的索引器的参数是: columnIndex, rowIndex 或是 columnName, rowIndex
这与习惯不同。
--------------------------------------------------------------------------------
★ DataGridView    设定单元格只读:
1) 使用 ReadOnly 属性
摇∪绻?M?珼ataGridView 内所有单元格都不可编辑, 那么只要:
[C#]
// 设置 DataGridView1 为只读
DataGridView1.ReadOnly = true;此时,用户的新增行操作和删除行操作也被屏蔽了。


摇∪绻?M?珼ataGridView 内某个单元格不可编辑, 那么只要:
[C#]
// 设置 DataGridView1 的第2列整列单元格为只读
DataGridView1.Columns[1].ReadOnly = true;

// 设置 DataGridView1 的第3行整行单元格为只读
DataGridView1.Rows[2].ReadOnly = true;

// 设置 DataGridView1 的[0,0]单元格为只读
DataGridView1[0, 0].ReadOnly = true;
2) 使用 EditMode 属性
DataGridView.EditMode 属性被设置为 DataGridViewEditMode.EditProgrammatically 时,用户就不能手动编辑单元格的内容了。但是可以通过程序,调用 DataGridView.BeginEdit 方法,使单元格进入编辑模式进行编辑。
[C#]
DataGridView1.EditMode = DataGridViewEditMode.EditProgrammatically;
3) 根据条件设定单元格的不可编辑状态
当一个一个的通过单元格坐标设定单元格 ReadOnly 属性的方法太麻烦的时候,你可以通过 CellBeginEdit 事件来取消单元格的编辑。
[C#]
// CellBeginEdit 事件处理方法
private void DataGridView1_CellBeginEdit(object sender,
      DataGridViewCellCancelEventArgs e)
{
      DataGridView dgv = (DataGridView)sender;
      //是否可以进行编辑的条件检查
      if (dgv.Columns[e.ColumnIndex].Name == "Column1" &&
          !(bool)dgv["Column2", e.RowIndex].Value)
      {
          // 取消编辑
          e.Cancel = true;
      }
}
--------------------------------------------------------------------------------
★ DataGridView    不显示最下面的新行:
通常 DataGridView 的最下面一行是用户新追加的行(行头显示 * )。如果不想让用户新追加行即不想显示该新行,可以将 DataGridView 对象的 AllowUserToAddRows 属性设置为 False。
[C#]
// 设置用户不能手动给 DataGridView1 添加新行
DataGridView1.AllowUserToAddRows = false;
但是,可以通过程序: DataGridViewRowCollection.Add 为 DataGridView 追加新行。

补足: 如果 DataGridView 的 DataSource 绑定的是 DataView, 还可以通过设置 DataView.AllowAdd
属性为 False 来达到同样的效果。

--------------------------------------------------------------------------------
★ DataGridView    判断新增行:
DataGridView的AllowUserToAddRows属性为True时也就是允许用户追加新行的场合下,DataGridView的最后一行就是新追加的行(*行)。使用 DataGridViewRow.IsNewRow 属性可以判断哪一行是新追加的行。另外,通过DataGridView.NewRowIndex 可以获取新行的行序列号。在没有新行的时候,NewRowIndex = -1。
If DataGridView1.CurrentRow.IsNewRow Then
      Console.WriteLine("当前行为新追加行。")
Else
      Console.WriteLine("当前行不是新追加行。")
End If
--------------------------------------------------------------------------------

责任编辑:DATAGRIDVIEW
首页 | 电气资讯 | 应用技术 | 高压电器 | 电气设计 | 行业应用 | 低压电器 | 电路图 | 关于我们 | 版权声明

Copyright 2017-2018 电气自动化网 版权所有 辽ICP备17010593号-1

电脑版 | 移动版 原创声明:本站大部分内容为原创,转载请注明电气自动化网转载;部分内容来源网络,如侵犯您的权益请发送邮件到[email protected]联系我们删除。