C#學習之DataGridView控件

目錄

一、DataGridView控件常用屬性、方法、事件匯總表

1. 常用方法、屬性和事件匯總

二、DataGridView?控件的常用方法調用

1.?DataBind()?方法

2.?Clear()?方法

3.?Refresh()?方法

4.?Sort()?方法

5.?ClearSelection()?方法

6.?BeginEdit()?方法

7.?EndEdit()?方法

8.?CommitEdit()?方法

9.?CancelEdit()?方法

10.?SelectAll()?方法

11.?GetCellCount()?方法

12.?GetColumnCount()?方法

13.?GetRowCount()?方法

14.?HitTest()?方法

15.?AutoResizeColumns()?方法

16.?AutoResizeRows()?方法

17.?Add()?方法

18.?Remove()?方法

19.?Insert()?方法

20.?Copy()?方法

21.?Paste()?方法

22.?Find()?方法

23.?ScrollIntoView()?方法

24.?InvalidateCell()?方法

25.?InvalidateRow()?方法

26.?InvalidateColumn()?方法

27.?Update()?方法

28.?Dispose()?方法

29.?Show()?和?Hide()?方法

30.?BringToFront()?和?SendToBack()?方法

三、DataTable作為DataGridView的數據源示例

1、代碼示例:

2. 代碼說明

3.總結


一、DataGridView控件常用屬性、方法、事件匯總表

DataGridView 是 Windows Forms 中用于顯示和編輯表格數據的強大控件。以下是一些常用的方法、屬性和事件的匯總。

1. 常用方法、屬性和事件匯總

類型名稱描述
屬性DataSource獲取或設置 DataGridView 的數據源。
Columns獲取控件中所有列的集合。
Rows獲取控件中所有行的集合。
CurrentCell獲取或設置當前活動的單元格。
ReadOnly獲取或設置一個值,指示用戶是否可以編輯控件的單元格。
AllowUserToAddRows獲取或設置一個值,指示是否向用戶顯示添加行的選項。
AllowUserToDeleteRows獲取或設置一個值,指示用戶是否可以從控件中刪除行。
SelectionMode獲取或設置一個值,指示如何選擇單元格。
MultiSelect獲取或設置一個值,指示是否允許用戶一次選擇多個單元格、行或列。
方法Refresh()強制控件使其工作區無效并立即重繪自己和任何子控件。
ClearSelection()取消選擇所有選定的單元格。
Sort()對 DataGridView 的內容進行排序。
BeginEdit()將當前的單元格置于編輯模式。
EndEdit()提交對當前單元格的編輯并結束編輯操作。
事件CellClick在單元格的任何部分被單擊時發生。
CellValueChanged在單元格的值更改時發生。
RowEnter在行接收到輸入焦點時發生。
RowLeave在行失去輸入焦點時發生。
SelectionChanged在當前選擇更改時發生。

二、DataGridView?控件的常用方法調用

以下是?DataGridView?控件的各種常用方法的調用過程。

1.?DataBind()?方法

將數據源綁定到?DataGridView

// 創建 DataTable
DataTable dataTable = new DataTable();
dataTable.Columns.Add("ID", typeof(int));
dataTable.Columns.Add("Name", typeof(string));
dataTable.Columns.Add("Age", typeof(int));// 添加數據
dataTable.Rows.Add(1, "Alice", 23);
dataTable.Rows.Add(2, "Bob", 30);
dataTable.Rows.Add(3, "Charlie", 25);// 綁定數據源
dataGridView1.DataSource = dataTable;

2.?Clear()?方法

清除?DataGridView?中的所有行和列。

dataGridView1.Clear();

3.?Refresh()?方法

刷新?DataGridView,使其重新繪制并顯示最新的數據。

dataGridView1.Refresh();

4.?Sort()?方法

對?DataGridView?中的列進行排序。

// 按 Name 列升序排序
dataGridView1.Sort(dataGridView1.Columns["Name"], ListSortDirection.Ascending);

5.?ClearSelection()?方法

取消所有選中的單元格、行或列。

dataGridView1.ClearSelection();

6.?BeginEdit()?方法

將當前單元格置于編輯模式。

// 將第一行第一列的單元格置于編輯模式
dataGridView1.CurrentCell = dataGridView1.Rows[0].Cells[0];
dataGridView1.BeginEdit(true);

7.?EndEdit()?方法

結束當前單元格的編輯并提交更改。

dataGridView1.EndEdit();

8.?CommitEdit()?方法

提交當前單元格的編輯并應用更改。

dataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit);

9.?CancelEdit()?方法

取消當前單元格的編輯并丟棄更改。

dataGridView1.CancelEdit();

10.?SelectAll()?方法

選擇?DataGridView?中的所有單元格。

dataGridView1.SelectAll();

11.?GetCellCount()?方法

獲取滿足指定狀態的單元格數量。

int selectedCellCount = dataGridView1.GetCellCount(DataGridViewElementStates.Selected);
MessageBox.Show("Selected cells: " + selectedCellCount);

12.?GetColumnCount()?方法

獲取滿足指定狀態的列的數量。

int visibleColumnCount = dataGridView1.GetColumnCount(DataGridViewElementStates.Visible);
MessageBox.Show("Visible columns: " + visibleColumnCount);

13.?GetRowCount()?方法

獲取滿足指定狀態的行數。

int selectedRowCount = dataGridView1.GetRowCount(DataGridViewElementStates.Selected);
MessageBox.Show("Selected rows: " + selectedRowCount);

14.?HitTest()?方法

獲取鼠標點擊位置的單元格信息。

private void dataGridView1_MouseClick(object sender, MouseEventArgs e)
{var hitTestInfo = dataGridView1.HitTest(e.X, e.Y);MessageBox.Show($"Row: {hitTestInfo.RowIndex}, Column: {hitTestInfo.ColumnIndex}");
}

15.?AutoResizeColumns()?方法

自動調整列的寬度以適應內容。

dataGridView1.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells);

16.?AutoResizeRows()?方法

自動調整行的高度以適應內容。

dataGridView1.AutoResizeRows(DataGridViewAutoSizeRowsMode.AllCells);

17.?Add()?方法

動態添加列或行。

// 添加列
dataGridView1.Columns.Add("NewColumn", "New Column");// 添加行
dataGridView1.Rows.Add(4, "David", 28);

18.?Remove()?方法

動態刪除列或行。

// 刪除列
dataGridView1.Columns.Remove("NewColumn");// 刪除行
dataGridView1.Rows.RemoveAt(0); // 刪除第一行

19.?Insert()?方法

在指定位置插入行。

// 在第二行插入新行
dataGridView1.Rows.Insert(1, 5, "Eva", 22);

20.?Copy()?方法

將選中的單元格內容復制到剪貼板。

dataGridView1.ClipboardCopyMode = DataGridViewClipboardCopyMode.EnableWithoutHeaderText;
dataGridView1.SelectAll();
dataGridView1.Copy();

21.?Paste()?方法

將剪貼板中的內容粘貼到選中的單元格。

dataGridView1.Paste();

22.?Find()?方法

查找指定列中匹配值的行。

int rowIndex = -1;
foreach (DataGridViewRow row in dataGridView1.Rows)
{if (row.Cells["Name"].Value.ToString() == "Bob"){rowIndex = row.Index;break;}
}
if (rowIndex != -1)
{MessageBox.Show("Found Bob at row: " + rowIndex);
}

23.?ScrollIntoView()?方法

滾動到指定的單元格。

dataGridView1.ScrollIntoView(dataGridView1.Rows[5].Cells[0]);

24.?InvalidateCell()?方法

使指定單元格無效并強制重繪。

dataGridView1.InvalidateCell(0, 0); // 使第一行第一列的單元格無效

25.?InvalidateRow()?方法

使指定行無效并強制重繪。

dataGridView1.InvalidateRow(0); // 使第一行無效

26.?InvalidateColumn()?方法

使指定列無效并強制重繪。

dataGridView1.InvalidateColumn(0); // 使第一列無效

27.?Update()?方法

強制重繪控件。

dataGridView1.Update();

28.?Dispose()?方法

釋放?DataGridView?占用的資源。

dataGridView1.Dispose();

29.?Show()?和?Hide()?方法

顯示或隱藏?DataGridView

dataGridView1.Show(); // 顯示
dataGridView1.Hide(); // 隱藏

30.?BringToFront()?和?SendToBack()?方法

調整?DataGridView?的 Z 軸順序。

dataGridView1.BringToFront(); // 置頂
dataGridView1.SendToBack();   // 置底

三、DataTable作為DataGridView的數據源示例

1、代碼示例:

將 DataTable 作為數據源賦值給 DataGridView 控件

using System;
using System.Data;
using System.Windows.Forms;namespace DataGridViewExample
{public partial class Form1 : Form{public Form1(){InitializeComponent();// 創建 DataTableDataTable dataTable = new DataTable();// 添加列dataTable.Columns.Add("ID", typeof(int));dataTable.Columns.Add("Name", typeof(string));dataTable.Columns.Add("Age", typeof(int));// 添加行dataTable.Rows.Add(1, "Alice", 23);dataTable.Rows.Add(2, "Bob", 30);dataTable.Rows.Add(3, "Charlie", 25);// 將 DataTable 賦值給 DataGridView 的數據源dataGridView1.DataSource = dataTable;// 設置 DataGridView 屬性dataGridView1.ReadOnly = true; // 設置為只讀dataGridView1.AllowUserToAddRows = false; // 禁止用戶添加行dataGridView1.AllowUserToDeleteRows = false; // 禁止用戶刪除行dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect; // 設置選擇模式為整行選擇dataGridView1.MultiSelect = false; // 禁止多選}private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e){// 處理單元格點擊事件if (e.RowIndex >= 0){DataGridViewRow row = this.dataGridView1.Rows[e.RowIndex];MessageBox.Show("You clicked on: " + row.Cells["Name"].Value.ToString());}}}
}

2. 代碼說明

  • DataTable 創建:首先創建了一個?DataTable?對象,并添加了三列(ID、Name、Age)。

  • 添加數據:通過?Rows.Add?方法向?DataTable?中添加了三行數據。

  • 綁定數據源:將?DataTable?賦值給?DataGridView?的?DataSource?屬性,這樣數據就會顯示在?DataGridView?中。

  • 設置屬性:設置了?DataGridView?的一些常用屬性,如?ReadOnlyAllowUserToAddRowsSelectionMode?等。

  • 事件處理:處理了?CellClick?事件,當用戶點擊某個單元格時,會彈出一個消息框顯示該行的?Name?列的值。

3.總結

通過以上代碼示例,可以輕松地將?DataTable?作為數據源綁定到?DataGridView?控件,并通過設置屬性和處理事件來實現更復雜的功能。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/895725.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/895725.shtml
英文地址,請注明出處:http://en.pswp.cn/news/895725.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

本地事務簡介

本地事務簡介 1 事務基本性質 數據庫事務的幾個特性:原子性(Automicity)、一致性(Consistency)、隔離性或獨立性(islation)和持久性(Durability),簡稱ACID。 原子性:一系列的操作,其整體不可拆分,要么同時成功&#…

PyQt組態軟件 拖拽設計界面測試

PyQt組態軟件測試 最近在研究PyQt,嘗試寫個拖拽設計界面的組態軟件,目前實現的功能如下: 支持拖入控件,鼠標拖動控件位置 拖動控件邊緣修改控件大小支持屬性編輯器,修改當前選中控件的屬性 拖動框選控件,點選控件 控…

軟件評測師復習之計算機網絡(4)

目錄 (一)1.網絡功能和分類2.OSI七層模型3.TCP/IP協議4.傳輸介質(二)1.通信方式和交換方式2.IP地址3.IPv64.網絡規劃與設計5.磁盤冗余陣列6.網絡存儲技術(一) 1.網絡功能和分類 計算機網絡功能:數據通信、資源共享、負載均衡、高可靠性 按分布范圍和拓撲結構劃分: 網絡分類…

機器學習-1:線性回歸

常用的線性回歸模型主要有以下這些 簡單線性回歸多元線性回歸多項式回歸嶺回歸套索回歸彈性網絡回歸逐步回歸 一.簡單的一元線性回歸 1.導入必備的庫 #導入必備的庫 import numpy as np import pandas as pd import matplotlib.pyplot as plt from sklearn.model_selection …

SQL SERVER的PARTITION BY應用場景

SQL SERVER的PARTITION BY關鍵字說明介紹 PARTITION BY關鍵字介紹具體使用場景排名計算累計求和分組求最值分組內百分比計算分組內移動平均計算分組內數據分布統計分組內數據偏移計算 總結 PARTITION BY關鍵字介紹 在SQL SERVER中,關鍵字PARTITION BY主要用于窗口函…

NO.18十六屆藍橋杯備戰|循環嵌套|乘法表|斐波那契|質數|水仙花數|(C++)

循環嵌套 循環嵌套的使? while , do while , for ,這三種循環往往會嵌套在?起才能更好的解決問題,就是我們所說的:循環嵌套。這三種循環都可以任意嵌套使? ?如: 寫?個代碼,打印?個乘法?…

leetcode - hot100 - python - 專題一:哈希

1、兩數之和 簡單 題目: 給定一個整數數組 nums 和一個整數目標值 target,請你在該數組中找出 和為目標值 target 的那 兩個 整數,并返回它們的數組下標。你可以假設每種輸入只會對應一個答案,并且你不能使用兩次相同的元素。你可…

JavaEE-SpringBoot快速入門

文章目錄 本節目標Maven什么是Maven創建一個Maven項目maven項目功能maven的依賴管理全球倉庫, 私服, 本地服務器, 配置國內鏡像 第一個SpringBoot項目創建項目運行SpringBoot程序 SpringBoot原理初步Web服務器 總結 本節目標 了解什么是maven, 配置國內源使用Springboot創建項…

【Viper】配置格式與支持的數據源與go案例

Viper 是一個用于 Go 應用程序的配置管理庫,支持多種配置格式和數據源。 安裝依賴 go get github.com/spf13/viper go get github.com/spf13/viper/remote go get go.etcd.io/etcd/client/v3"github.com/spf13/viper/remote"要寫在etcd客戶端import里 1…

【C/C++】后綴表達式 藍橋杯/ACM備賽

核心考點:1.棧的應用 2.字符串處理 題目描述 所謂后綴表達式是指這樣的一個表達式:式中不再引用括號,運算符號放在兩個運算對象之后,所有計算按運算符號出現的順序,嚴格地由左而右新進行(不用考慮運算符的…

【AI實踐】deepseek支持升級git

當前Windows 11 WSL的git是2.17,Android Studio提示需要升級到2.19版本 網上找到指導文章 安裝git 2.19.2 cd /usr/src wget https://www.kernel.org/pub/software/scm/git/git-2.19.2.tar.gz tar xzf git-2.19.2.tar.gz cd git-2.19.2 make prefix/usr/l…

QEMU 搭建 Ubuntu x86 虛擬機

1. 安裝 QEMU 在 Ubuntu 系統中,可以通過以下命令安裝 QEMU: sudo apt-get update sudo apt-get install qemu-system-x86_64 qemu-kvm libvirt-daemon libvirt-clients bridge-utils virt-manager2. 創建虛擬硬盤鏡像 qemu-img create -f raw ubuntu…

Linux驅動層學習:Linux 設備樹

設備樹是一種數據結構,包含多個節點,用于描述硬件設備及其配置信息,它通常用于嵌入式系統中,尤其是在Linux操作系統中,幫助操作系統識別和管理硬件資源,設備樹不是代碼,而是一種用數據描述硬件信…

金蝶云星空與釘釘高效數據集成案例分享

金蝶云星空數據集成到釘釘的技術案例分享 在企業信息化系統中,數據的高效流動和實時反饋是提升業務效率的關鍵。本文將聚焦于一個具體的系統對接集成案例:如何將金蝶云星空的數據集成到釘釘,并實現審核狀態的回傳提示。 本次集成方案名為“…

圖形渲染(一)——Skia、OpenGL、Mesa 和 Vulkan簡介

1.Skia —— 2D 圖形庫 Skia 是一個 2D 圖形庫,它的作用是為開發者提供一個高層次的繪圖接口,方便他們進行 2D 圖形渲染(比如繪制文本、形狀、圖像等)。Skia 本身不直接管理 GPU 或進行底層的渲染工作,而是通過 底層圖…

GIT提錯分支,回滾提交

1. 準備示例 假設我們有三次提交: test1:需要在 master 分支提交test2、test3:需要在 develop 分支提交 遠端線上記錄 2. 步驟 選擇需要回退的記錄: 選中需要回退的 commit,選擇 Reset Current Branch to Here...。…

【原創】在ubuntu中搭建gradle開發環境

檢查Linux版本 rootwww:~# hostnamectlStatic hostname: www.0x88.comIcon name: computer-vmChassis: vmMachine ID: 30fa955a36be492ca459599ef20bc508Boot ID: 37084dbe36f44adaa075e8f9a98f132eVirtualization: kvm Operating System: Ubuntu 22.04.5 LTSKernel: Linux 5.…

【JavaEE進階】MyBatis入門

目錄 🌴前言 🌲什么是MyBatis? 🌳準備工作 🚩創建工程 🚩配置數據庫連接字符串 🚩數據準備 🚩編寫持久層代碼 🍃單元測試 🌴前言 在應?分層學習時,我們了解到…

以太網詳解(八)傳輸層協議:TCP/UDP 協議

文章目錄 傳輸層協議概述為什么需要傳輸層?傳輸層功能網絡層與傳輸層在實現 “端到端” 傳輸的異同兩類服務:面向連接/無連接服務 傳輸控制協議 TCPTCP 協議數據單元格式TCP 的重傳機制快重傳和快恢復快重傳舉例快恢復算法 用戶數據報協議 UDPUDP 概述UDP 基本工作過…

Electron 客戶端心跳定時任務調度庫調研文檔 - Node.js 任務調度庫技術調研文檔

Electron 客戶端心跳定時任務調度庫調研文檔 - Node.js 任務調度庫技術調研文檔 本文將對七個流行的定時任務調度庫:node-cron、rxjs、bull、node-schedule、agenda、bree、cron。這些庫都可以用來處理定時任務,但它們的特點和適用場景有所不同。我們將從…