C#-DataGridView控件的一些用法

1.当前的单元格属性取得、变更
'当前选中单元的值: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编辑属性

全部单元格编辑属性

'DataGridView1只读属性:DataGridView1.ReadOnly = True

指定行列单元格编辑属性 :

DataGridView1.Columns[1]ReadOnly = True
DataGridView1.Rows[2].ReadOnly = True
DataGridView1[0, 0].ReadOnly = True

根据条件判断单元格的编辑属性
下例中column2的值是True的时候,Column1设为可编辑
代码
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最下面一列新追加行非表示
DataGridView1.AllowUserToAddRows = False

4.判断当前选中行是否为新追加的行
if (DataGridView1.CurrentRow.IsNewRow)
{
        Console.WriteLine("当前行,是新添加的行");
}
        else

{
        Console.WriteLine("当前行,不是新添加的行");
}

5. DataGridView删除行可否设定
DataGridView1.AllowUserToDeleteRows = False

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

 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行列不表示和删除

行列不表示

'DataGridView1的第一列不表示 :DataGridView1.Columns[0].Visible = False
'DataGridView1的第一行不表示:DataGridView1.Rows[0].Visible = False

行列表头部分不表示 :DataGridView1.ColumnHeadersVisible = False;      DataGridView1.RowHeadersVisible = False
指定行列删除:

DataGridView1.Columns.Remove("Column1")
DataGridView1.Columns.RemoveAt(0)
DataGridView1.Rows.RemoveAt(0)

选择的行列删除(多行列)
'DataGridView1删除选中的行:
foreach (DataGridViewRow r in DataGridView1.SelectedRows)
             {
                 if (!r.IsNewRow)
                 {
                     DataGridView1.Rows.Remove(r);
                 }
             }

7. DataGridView行列宽度高度设置为不能编辑
'DataGridView1的列的宽设为不能编辑 :DataGridView1.AllowUserToResizeColumns = False
'DataGridView1的行的高设为不能编辑:DataGridView1.AllowUserToResizeRows = False


指定行列宽度高度设置为不能编辑
'DataGridView1指定列宽度设置为不能编辑 :DataGridView1.Columns[0].Resizable = DataGridViewTriState.False
'DataGridView1指定行高度设置为不能编辑 :DataGridView1.Rows[0].Resizable = DataGridViewTriState.False

列幅行高最小值设定
'列幅最小值设定为100:DataGridView1.Columns[0].MinimumWidth = 100
'行高最小值设定为50 :DataGridView1.Rows[0].MinimumHeight = 50

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

DataGridView1.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing

行列表头部分列幅设置为能编辑
DataGridView1.RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.EnableResizing

8. DataGridView行高列幅自动调整
根据内容,列幅自动调整:DataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells
根据内容,行高自动调整:DataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells


表头部分行高列幅自动调整
'表头列高自动调整 :
DataGridView1.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize
'表头行幅自动调整:
DataGridView1.RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders

指定列自动调整
'指定列的列幅自动调整 :
DataGridView1.Columns[0].AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells

9. DataGridView指定行列冻结
列冻结(当前列以及左侧做所有列)
'DataGridView1的左侧2列固定:DataGridView1.Columns[1].Frozen = True


行冻结(当前行以及上部所有行)
'DataGridView1的上部2行固定 :DataGridView1.Rows[2].Frozen = True

指定单元格冻结(单元格所在行上部分所有行,列左侧所有列) :
DataGridView1[0, 0]. Frozen = True

10. DataGridView列顺序变更可否设定
'DataGridView1的列的位置设定为允许改变 :DataGridView1.AllowUserToOrderColumns = True

但是如果列冻结的情况下,冻结的部分不能变更到非冻结的部分。
变更后列位置取得
'取得列"Column1"现在的位置 :Console.WriteLine(DataGridView1.Columns["Column1"].DisplayIndex)
'列"Column1"移动到最前面 :DataGridView1.Columns["Column1"].DisplayIndex = 0

11. DataGridView行复数选择

不可选择多行

'DataGridView1不可选择多行:DataGridView1.MultiSelect = False

单元格选择的时候默认为选择整行 :DataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect

12. DataGridView选择的行、列、单元格取得
'输出选择的单元格位置:

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

指定行、列、单元格取得
'(0, 0)的选中 :DataGridView1[0, 0].Selected = True
'Index为1的行选中 :DataGridView1.Rows[1].Selected = True
'Index为2的列选中:DataGridView1.Columns[2].Selected = True

13. DataGridView指定单元格是否表示
if (DataGridView1 [2,0].Displayed&& DataGridView1 [2,0].Visible)
{
     DataGridView1.CurrentCell = DataGridView1[2,0];
}

14. DataGridView表头部单元格取得
'DataGridView1第一列表头改变 :DataGridView1.Columns[0].HeaderCell.Value = "第一列"
'DataGridView1第一行表头改变 :DataGridView1.Rows[0].HeaderCell.Value = "第一行"
'DataGridView1左上角单元格值改变 :DataGridView1.TopLeftHeaderCell.Value = "左上"

15. DataGridView表头部单元格文字列设定
更改列Header表示文字列
'DataGridView1改变第一列头部单元格文字 :DataGridView1.Columns[0].HeaderText = "第一列"


更改行Header表示文字列
'DataGridView1行的头部单元格为序号 :
for (int i = 0; i < DataGridView1.Rows.Count-1; i++)
{
     DataGridView1.Rows[i].HeaderCell.Value=i.ToString();
}

'行的宽度自动调节:
DataGridView1.AutoResizeRowHeadersWidth( DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders)

最左上Header单元格文字列
'修改最左上单元格 :DataGridView1.TopLeftHeaderCell.Value = "/"

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

拷贝模式设定 “DataGridView1.ClipboardCopyMode = DataGridViewClipboardCopyMode.EnableWithoutHeaderText

选中部分拷贝 :Clipboard.SetDataObject(DataGridView1.GetClipboardContent())

17.DataGridView粘贴
代码
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表示设定(鼠标移动到相应单元格上时,弹出说明信息)
指定单元格:DataGridView1[0, 0].ToolTipText = "指定单元格"
指定列 :DataGridView1.Columns[0].ToolTipText = "指定列"
指定行:DataGridView1.Rows[0].HeaderCell.ToolTipText = "指定行"

CellToolTipTextNeeded事件,在多个单元格使用相同的ToolTips的时候,可以用该事件,下例为显示当前单元格的行号和列号
'CellToolTipTextNeeded事件 :
private void DataGridView1_CellToolTipTextNeeded(object sender, DataGridViewCellToolTipTextNeededEventArgs e)
{
     e.ToolTipText = e.RowIndex.ToString() + "," + e.ColumnIndex.ToString();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值