C# DataGridView使用,数据添加,限制单元格输入类型,按数值排序等

一、简单数据添加、设定单元格数据类型,若设置为数字,排序按照数值大小排序,否则是按照字符串排序

using System;
using System.Collections.Generic;
using System.Windows.Forms;

namespace HelpTool
{
	/// <summary>
	/// 数据按表格显示出来
	/// </summary>
	public partial class FrmShowDataGridView : Form
	{
		List<string[]> strDataItem_m = new List<string[]>();
		List<double[]> dbDataItem_m = new List<double[]>();
		string[] titleColumn_m;

		bool cellDataIsString_m = true;//单元格的数据是字符串
		uint decimalPlace_m = 2;//单元格的数据是double时,保留的小数位数

		/// <summary>
		/// 数据按表格显示出来
		/// </summary>
		/// <param name="dataItem">显示的数据项,单个数据项数据与标题一一对应</param>
		/// <param name="titleColumn">数据标题,长度与单个数据项一致</param>
		/// <param name="showText">显示标题</param>
		public FrmShowDataGridView(List<string[]> dataItem, string[] titleColumn, string showText = "数据显示")
		{
			InitializeComponent();
			strDataItem_m = dataItem;
			titleColumn_m = titleColumn;
			linkLabel1.Text = showText;
			cellDataIsString_m = true;
		}

		/// <summary>
		/// 数据按表格显示出来
		/// </summary>
		/// <param name="dataItem">显示的数据项,单个数据项数据与标题一一对应</param>
		/// <param name="titleColumn">数据标题,长度与单个数据项一致</param>
		/// <param name="showText">显示标题</param>
		/// <param name="decimalPlace">保留小数位数</param>
		public FrmShowDataGridView(List<double[]> dataItem, string[] titleColumn, uint decimalPlace = 2, string showText = "数据显示")
		{
			InitializeComponent();
			cellDataIsString_m = false;
			dbDataItem_m = dataItem;
			titleColumn_m = titleColumn;
			linkLabel1.Text = showText;
			decimalPlace_m = decimalPlace;
		}

		private void FrmShowDataGridView_Load(object sender, EventArgs e)
		{
			dataGridView1.Columns.Clear();
			dataGridView1.Rows.Clear();
			dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;
			dataGridView1.AutoSizeRowsMode =  DataGridViewAutoSizeRowsMode.AllCells;
			dataGridView1.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize;
			dataGridView1.AllowUserToAddRows = false;//不显示新行
			dataGridView1.AllowUserToDeleteRows = false;
			dataGridView1.ColumnHeadersVisible = true;//行标题显示
			dataGridView1.RowHeadersVisible = true;//行标题显示
			try
			{
				for (int i = 0; i < titleColumn_m.Length; i++)
				{
					dataGridView1.Columns.Add("Column" + i, titleColumn_m[i]);
					dataGridView1.Columns[i].SortMode = DataGridViewColumnSortMode.Automatic;
					dataGridView1.Columns[i].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;

					if(!cellDataIsString_m)
					{
						//设置单元列是数字类型,这样排序的时候就会按照数值大小排序,否则是按照字符串排序
						//数据格式:N=double,F=float,D=int , B=二进制 ,X=十六进制 , C=带货币符号 , P=百分数
						dataGridView1.Columns[i].DefaultCellStyle.Format = "N"+ decimalPlace_m;//保存几位小数
					}
				}

				int row = 0;
				if(cellDataIsString_m)
				{
					foreach (string[] item in strDataItem_m)
					{
						if (item.Length == titleColumn_m.Length)
						{
							int cell = 0;
							dataGridView1.Rows.Add();
							foreach (string str in item)
							{
								dataGridView1.Rows[row].Cells[cell++].Value = str;//++ 先使用,再自加1
							}
							row++;
						}
					}
				}
				else
				{
					foreach (double[] item in dbDataItem_m)
					{
						if (item.Length == titleColumn_m.Length)
						{
							int cell = 0;
							dataGridView1.Rows.Add();
							foreach (double db in item)
							{
								dataGridView1.Rows[row].Cells[cell++].Value = db;//++ 先使用,再自加1
							}
							row++;
						}
					}
				}
			}
			catch (Exception ex)
			{

			}
		}
	}
}

二、设定单元格类型,通过DataGridView属性界面,在Columns集合添加需要的列,并把列ColumnType属性设置成想要的类型(button、textBox、checkBox、comboBox)

三、更改单元格背景色:dataGridView1.Rows[0].Cells[0].Style.BackColor = Color.Green 

如果单元格类型是button,则需要按以下代码设置

DataGridViewButtonCell dg_btn_cell = new DataGridViewButtonCell();
dg_btn_cell.FlatStyle = FlatStyle.Flat;//button外观样式改为 FlatStyle.Flat,即可更改背景色;
dg_btn_cell.Style.BackColor = Color.LightGray;
dg_btn_cell.Value = "OFF";
dg_btn_cell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
dataGridView1.Rows[0].Cells[2] = dg_btn_cell;

四、限制单元格只能输入数字

        private void Form1_Load(object sender, EventArgs e)
		{
			if (dataGridView1.Rows.Count <= 0)
			{
				dataGridView1.Rows.Add();
			}
			dataGridView1.BeginEdit(true);//最少要有一行,否则会报错
			dataGridView1.EditingControlShowing += new DataGridViewEditingControlShowingEventHandler(this.dgv_EditingControlShowing);
		}
		/// <summary>
		/// 单元格编辑事件
		/// </summary>
		/// <param name="sender"></param>
		/// <param name="e"></param>
		private void dgv_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
		{
			e.CellStyle.BackColor = Color.Aquamarine;

			cellEdit_m = (DataGridViewTextBoxEditingControl)e.Control;
			cellEdit_m.SelectAll();
			cellEdit_m.KeyPress -= Cells_KeyPress; //绑定事件
			if (sender is DataGridView)
			{
				DataGridView gridView = (DataGridView)sender;
				if (gridView.CurrentCell.ColumnIndex > 1)
				{
					cellEdit_m.KeyPress += Cells_KeyPress; //绑定事件
				}
			}
		}
		/// <summary>
		/// 单元格键盘按下事件
		/// </summary>
		/// <param name="sender"></param>
		/// <param name="e"></param>
		private void Cells_KeyPress(object sender, KeyPressEventArgs e) //自定义事件
		{
			//设定只接收对应按键;此处只能输入数字、删除
			if (!(e.KeyChar >= '0' && e.KeyChar <= '9') && e.KeyChar != '\b')
			{
				e.Handled = true;
			}
		}

五、单元格类型是button按钮单击事件绑定在单元格单击事件中CellClick

private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
		{
			if (e.RowIndex < 0)
				return;
			int rowIndex = e.RowIndex;
			int colIndex = e.ColumnIndex;
			if (colIndex < 8)//前面8列不是button
			{
				return;
			}

			switch (colIndex)
			{
				case 9:
					//编写button按下后对应的功能,比如轴连续运动
					break;
				case 10:
					//编写button按下后对应的功能,比如轴相对运动
					break;
				case 11:
					//编写button按下后对应的功能,比如轴绝对运动
					break;
				case 12:
					//编写button按下后对应的功能,比如轴回原运动
					break;
				case 13:
					//编写button按下后对应的功能,比如轴停止运动
					break;
				case 14:
					//编写button按下后对应的功能,比如轴使能
					break;
			}

		}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要在C#中向DataGridView添加数据,你需要先创建一个DataTable对象,然后为每一列创建DataGridViewTextBoxColumn对象,并将其添加DataGridView的Columns集合中。接下来,你可以使用DataTable的方法,例如Rows.Add()来添加数据行。最后,将DataTable对象设置为DataGridView的DataSource属性即可。下面是一个示例代码来演示如何实现: ``` // 创建DataTable对象 DataTable dt = new DataTable(); // 创建列对象 DataGridViewTextBoxColumn col = new DataGridViewTextBoxColumn(); DataGridViewTextBoxColumn col1 = new DataGridViewTextBoxColumn(); DataGridViewTextBoxColumn col2 = new DataGridViewTextBoxColumn(); // 将列对象添加DataGridView的Columns集合中 dataGridView1.Columns.Add(col); dataGridView1.Columns.Add(col1); dataGridView1.Columns.Add(col2); // 添加数据行 dt.Rows.Add("数据1", "数据2", "数据3"); dt.Rows.Add("数据4", "数据5", "数据6"); // 将DataTable对象设置为DataGridView的DataSource属性 dataGridView1.DataSource = dt; ``` 通过上述步骤,你可以成功向C#DataGridView添加数据。请根据你的实际需求进行相应的修改和调整。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [C# DataGridView手动添加数据](https://blog.csdn.net/zrh1121/article/details/46593863)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值