国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

C# DataGridView控件的基礎(chǔ)應(yīng)用實(shí)例

這篇具有很好參考價(jià)值的文章主要介紹了C# DataGridView控件的基礎(chǔ)應(yīng)用實(shí)例。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

引言

??DataGridView我把他叫做網(wǎng)格數(shù)據(jù)控件 。我們?cè)陲@示表格數(shù)據(jù)的時(shí)候,經(jīng)常會(huì)用想到用它, 他就像Excel表格一樣。我們知道只要是數(shù)據(jù)表,就一定逃不掉表的增刪查改操作。
??該篇,我在VS2019的環(huán)境下通過(guò)demo實(shí)例來(lái)實(shí)現(xiàn)DataGridView控件的一系列功能,包括添加一行數(shù)據(jù)、切換允許修改單元格、復(fù)制選擇數(shù)據(jù)、復(fù)制所有數(shù)據(jù)、讀一行數(shù)據(jù)、讀取所有數(shù)據(jù)、查找記錄、刪除一行數(shù)據(jù)、刪除一行數(shù)據(jù)、刪除多行數(shù)據(jù)、清除所有行以及清除所有列。


一、界面簡(jiǎn)介

??我新建了一個(gè)Form窗體。左上角最大的控件就是DataGridView,將demo功能定義到按鍵的單擊事件中,另外添加了 一個(gè)文本框textBox和兩個(gè)下拉菜單comBox來(lái)輸入姓名、性別和班級(jí)。富文本框用來(lái)輸出部分功能的輸出使用。請(qǐng)見(jiàn)下圖。
C# DataGridView控件的基礎(chǔ)應(yīng)用實(shí)例


二、初始化

??初始化包括參數(shù)初始化和表頭初始化。
??(1)參數(shù)初始化可以使用代碼修改,也可以通過(guò)屬性欄修改默認(rèn)值,屬性比較多,可以自己去嘗試,下面我只舉幾個(gè)用代碼控制的例子。
??(2)表頭初始化的目的是添加列,沒(méi)有列是無(wú)法添加對(duì)應(yīng)的行數(shù)據(jù)的,我們可以不用規(guī)定列的寬度和表頭內(nèi)容,但是必須定義列數(shù)量,dataGridView.Columns.Add(new DataGridViewTextBoxColumn())就只實(shí)現(xiàn)這個(gè)功能的。如實(shí)例中,我們就添加了4個(gè)列。

        private void InitDataGridView ()
        {

            //根據(jù)Header和所有單元格的內(nèi)容自動(dòng)調(diào)整行的高度
            dataGridView.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells;
            //設(shè)置內(nèi)容對(duì)齊方式和字體 
            dataGridView.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;            
            //dataGridView_Report.Font = new Font("宋體", 10);
            //設(shè)置所有單元格都不可編輯
            dataGridView.ReadOnly = true;
            //設(shè)置標(biāo)題頭列寬
            dataGridView.RowHeadersWidth = 15; 
            //不可以增加空行
            dataGridView.AllowUserToAddRows = false;   
            //添加表頭
            for (int i = 0; i < 4; i++)
            {
                dataGridView.Columns.Add(new DataGridViewTextBoxColumn());
            }
            //指定標(biāo)題列寬
            dataGridView.Columns[0].Width = 60;
            dataGridView.Columns[1].Width = 100;
            dataGridView.Columns[2].Width = 80;
            dataGridView.Columns[3].Width = 150;
            //添加標(biāo)題字符
            dataGridView.Columns[0].HeaderText = "序號(hào)";
            dataGridView.Columns[1].HeaderText = "姓名";
            dataGridView.Columns[2].HeaderText = "性別";
            dataGridView.Columns[3].HeaderText = "班級(jí)";
              
        }

三、添加一行數(shù)據(jù)

??添加一行數(shù)據(jù),首先,要明確你要在表格的哪個(gè)位置添加幾行數(shù)據(jù),否則,無(wú)法知道往什么位置insert多少個(gè)數(shù)據(jù)。其次,必須清楚每一列的數(shù)據(jù)類型,一一對(duì)應(yīng)才可以寫(xiě)對(duì)數(shù)據(jù)。另外,ClearSelection()方法可以去除默認(rèn)的選擇,防止始終有選擇的焦點(diǎn)在控件上,可以讓界面清靜一點(diǎn)。

		private void button_add_Click(object sender, EventArgs e)
        {
            //排除異常輸入
             if(textBox_Name.Text == string.Empty || comboBox_Sex.Text ==string.Empty|| comboBox_Class.Text == string.Empty)
            {
                return;
            }
            //得到總行數(shù) 
            int num = dataGridView.Rows.Count; 
            //向第一行插入一行數(shù)據(jù)
            this.dataGridView.Rows.Insert(0, 1);
            //寫(xiě)第一行第二列數(shù)據(jù)//插入名字
            this.dataGridView.Rows[0].Cells[1].Value = textBox_Name.Text;
            //寫(xiě)第一行第三列數(shù)據(jù)//插入性別
            this.dataGridView.Rows[0].Cells[2].Value = comboBox_Sex.Text;
            //寫(xiě)第一行第四列數(shù)據(jù)//插入班級(jí)
            this.dataGridView.Rows[0].Cells[3].Value = comboBox_Class.Text;
            //寫(xiě)第所有行第一列數(shù)據(jù)//插入顯示序號(hào)
            for (int i = 0; i < num + 1; i++)
            {
                this.dataGridView.Rows[i].Cells[0].Value = i + 1;
            }
            //去除選擇
            dataGridView.ClearSelection();
        }


四、允許修改表格

??允許修改表格是由屬性ReadOnly決定的。因此,非常容易改變和修改。實(shí)例中用CheckBox的改變事件來(lái)控制屬性的true 或false。

   private void checkBox_Modify_CheckedChanged(object sender, EventArgs e)
        {
            if(checkBox_Modify.Checked == true)
                 dataGridView.ReadOnly = false;
            else
                dataGridView.ReadOnly = true;
        }


五、復(fù)制選擇的數(shù)據(jù)

??DataGridView控件是可以允許選擇一個(gè)單元格或者多個(gè)單元格,跨行的單元格,我們通過(guò)
選擇后,背景色將變成默認(rèn)的藍(lán)色。我們注意要先排除沒(méi)有被選擇的情況。這里的Clipboard.SetDataObject()方法,和Ctrl+C的功能是一樣的。我們就可以利用這個(gè)省去用戶鍵盤(pán)操作。


 		private void button_Copy_Click(object sender, EventArgs e)
        {
            //排除異常
            if (dataGridView.CurrentCell == null)
                return;
            //單元格格式化內(nèi)容復(fù)制到粘貼板
            Clipboard.SetDataObject(dataGridView.GetClipboardContent());             
        }

六、復(fù)制所有數(shù)據(jù)

??復(fù)制所有數(shù)據(jù)和復(fù)制指定數(shù)據(jù)一樣,只是我們可以將控件的所有數(shù)據(jù)自動(dòng)全選上。再直接拷貝到粘貼板。簡(jiǎn)直不要太簡(jiǎn)單。

        private void button_SelectAll_Click(object sender, EventArgs e)
        {
            dataGridView.SelectAll();
            //單元格格式化內(nèi)容復(fù)制到粘貼板
            Clipboard.SetDataObject(dataGridView.GetClipboardContent());
        }

七、讀一行數(shù)據(jù)

??讀一行數(shù)據(jù),前提條件是需要首先選擇好一行數(shù)據(jù)的,點(diǎn)擊每行的最左邊就可以選擇整行數(shù)據(jù)的,否者我們就不執(zhí)行后面的操作。
??獲取選擇的索引后將數(shù)據(jù)按照整列的數(shù)據(jù)逐一拷貝到數(shù)組中,最后顯示。當(dāng)然也可以不使用逐一讀取,通過(guò)數(shù)據(jù)復(fù)制的方法將數(shù)據(jù)格式化數(shù)據(jù)送到粘貼板后再進(jìn)行操作。
??如果選擇了多行,甚至是跨行多行,索引Index則是指向最后一個(gè)行,所以,代碼將復(fù)制最后的那一行。

        private void button_Read_Click(object sender, EventArgs e)
        {
            //判斷是否選中一行
            if (dataGridView.SelectedRows.Count == 0)
                return;
            //獲取選擇的索引
            int index = dataGridView.CurrentRow.Index;
            string line = "";
            for (int i = 1; i < dataGridView.ColumnCount; i++)
            {
                line += dataGridView.Rows[index].Cells[i].Value.ToString();
                if (i == dataGridView.ColumnCount - 1)
                    line += "\n";
            }
            //顯示在富文本中
            display_in_richTextBox(line);
        }

八、讀所有數(shù)據(jù)

??讀取所有數(shù)據(jù)和復(fù)制所有數(shù)據(jù)有點(diǎn)類似,這里直接使用兩個(gè)for循環(huán)將每個(gè)單元格的數(shù)據(jù)格式化輸出連接到字符串中。

    	private void button_ReadAll_Click(object sender, EventArgs e)
        {            
            string all_data = "";
            for(int i = 0; i < dataGridView.Rows.Count; i++)//行循環(huán)
            {
                for (int j = 0; j < dataGridView.ColumnCount; j++) //列循環(huán)
                {  
                    all_data += dataGridView.Rows[i].Cells[j].Value.ToString();
                    if (j == dataGridView.ColumnCount - 1)
                        all_data += "\n";
                    else
                        all_data += "\t";
                }                
            }
           //顯示數(shù)據(jù)
            display_in_richTextBox(all_data); 
        }

九、查找名字記錄

??查找某個(gè)列的記錄中是否有對(duì)應(yīng)的數(shù)據(jù)存在,這里我按照順序的方法直接找到對(duì)應(yīng)數(shù)據(jù),并將焦點(diǎn)跳到搜索到的位置。查找的算法方法很多,還可以多次查找,模糊查找、這里只是為了說(shuō)明控件實(shí)現(xiàn),就不使用其它方法來(lái)復(fù)雜代碼了。

        //位置定義
        int position = 0;

		private void button_Search_Click(object sender, EventArgs e)
        {
            //獲取行數(shù)
            int Count = dataGridView.Rows.Count;
            //得到的要搜索的內(nèi)容
            string find_name = textBox_Name.Text;
            //循環(huán)搜讀對(duì)比
            for (int i = position; i < Count; i++)
            {   
                if (find_name == dataGridView.Rows[i].Cells[1].Value.ToString())//對(duì)比
                {
                    //選擇指定單元格
                    dataGridView.CurrentCell = dataGridView.Rows[i].Cells[1];
                    //返回
                    return;
                } 
                
            }
            //沒(méi)有找到
        }


十、刪除一行數(shù)據(jù)

??刪除一行數(shù)據(jù)同樣是需要先規(guī)定是選中了至少有1行以上,刪除行才有意義。
??如果選擇了多行,甚至是跨行多行,索引Index則是指向最后一個(gè)行,因此這種情況,代碼將刪除最后的那一行。

  		private void button_Delete_Click(object sender, EventArgs e)
        {
            //判斷是否選中一行
            if (dataGridView.SelectedRows.Count == 0)
                return;
            //刪除一行
            dataGridView.Rows.RemoveAt(dataGridView.CurrentRow.Index);
            
        }

十一、刪除多行數(shù)據(jù)

?? SelectedRows是獲取用戶選定的行的集合。通過(guò)選擇集合的循環(huán),可以逐個(gè)刪除(remove)掉對(duì)應(yīng)的所有行(row)。感覺(jué)這個(gè)方法還是非??旖莸摹?/p>

        private void button_DeleteMultRow_Click(object sender, EventArgs e)
        {
            foreach (DataGridViewRow row in dataGridView.SelectedRows)
            {
                if (!row.IsNewRow)
                {
                    dataGridView.Rows.Remove(row);
                }
            }
        }

十二、清除所有行

?? 清除所有行的方法 Rows.Clear()是我們需要清除所有數(shù)據(jù)時(shí)使用的,清除后表頭是不會(huì)刪除的。

 	    private void button_Clear_Click(object sender, EventArgs e)
        {
            //刪除所有行
            dataGridView.Rows.Clear();
        }

十三、刪除所有列

?? 清除所有列的方法Columns.Clear() 是我們需要清除所有數(shù)據(jù)和表頭時(shí)使用的,清除后表頭會(huì)刪除掉的,也就是沒(méi)有了列,要重新添加數(shù)據(jù)時(shí)需要初始化列才可以的。

  	private void button_ClearColumns_Click(object sender, EventArgs e)
      {
          //刪除包括標(biāo)題在內(nèi)的所有列
          dataGridView.Columns.Clear();
      } 

十四、其它:選中單元格

?? 下面實(shí)例實(shí)現(xiàn)的是指定選中第0行第1列。此單元格將高亮。

dataGridView.CurrentCell = dataGridView.Rows[0].Cells[1];

十五、最后

?? 上面講到的是我平時(shí)有用到的DataGridView控件的方法,抽空用demo工程實(shí)現(xiàn)和描述了一遍,時(shí)間有限,如有描述的不夠明白的,朋友們都可以與我討論和指正。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-406983.html

到了這里,關(guān)于C# DataGridView控件的基礎(chǔ)應(yīng)用實(shí)例的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • C# Winfrom通過(guò)COM接口訪問(wèn)和控制Excel應(yīng)用程序,將Excel數(shù)據(jù)導(dǎo)入DataGridView

    C# Winfrom通過(guò)COM接口訪問(wèn)和控制Excel應(yīng)用程序,將Excel數(shù)據(jù)導(dǎo)入DataGridView

    1.首先要?jiǎng)?chuàng)建xlsx文件 2.在Com中添加引用 3. 添加命名空間 ????????using ApExcel = Microsoft.Office.Interop.Excel; ? ? ? ? --這樣起個(gè)名字方面后面寫(xiě) 4.樣例 5.獲取sheet.Cells值的時(shí)候也可以不使用強(qiáng)制轉(zhuǎn)換,還要注意這個(gè)的下標(biāo)是從1開(kāi)始的

    2024年02月11日
    瀏覽(18)
  • DataGridView 控件分頁(yè)

    DataGridView 控件分頁(yè)

    在使用 Winform 開(kāi)發(fā)桌面應(yīng)用時(shí),工具箱預(yù)先提供了豐富的基礎(chǔ)控件,利用這些基礎(chǔ)控件可以開(kāi)展各類項(xiàng)目的開(kāi)發(fā)。但是或多或少都會(huì)出現(xiàn)既有控件無(wú)法滿足功能需求的情況,或者在開(kāi)發(fā)類似項(xiàng)目時(shí),我們希望將具有相同功能的模板封裝成一個(gè)標(biāo)準(zhǔn)控件等,在這些場(chǎng)景下, wi

    2024年02月16日
    瀏覽(18)
  • C#Winform的DataGridView控件使用詳解2—DataGridView表格樣式設(shè)置及表格操作

    C#Winform的DataGridView控件使用詳解2—DataGridView表格樣式設(shè)置及表格操作

    在展示和處理二維數(shù)據(jù)時(shí),我們常常會(huì)想起Excel。但是使用Excel自帶的各種函數(shù)處理較為繁瑣的步驟時(shí)顯得略顯吃力,如果使用Excel自帶宏編程,可能會(huì)對(duì)VB語(yǔ)言不甚熟悉或是感覺(jué)不nice。這個(gè)時(shí)候,熟悉C#編程語(yǔ)言的你,就需要用到DataGridView控件,設(shè)計(jì)一款二維數(shù)據(jù)處理利器。

    2024年02月03日
    瀏覽(24)
  • 使用雙緩沖技術(shù)解決winform窗體控件卡頓(dataGridView加載數(shù)據(jù)緩慢)

    使用雙緩沖技術(shù)解決winform窗體控件卡頓(dataGridView加載數(shù)據(jù)緩慢)

    在做C/S項(xiàng)目中,做好的窗體出現(xiàn)了頁(yè)面加載控件緩慢,放大、縮小窗體之后,窗體加載卡頓,以及數(shù)據(jù)渲染緩慢。 百度介紹:我們看電視時(shí),看到的屏幕稱為OSD層,也就是說(shuō),只有在OSD層上顯示圖像我們才能看到?,F(xiàn)在,我需要?jiǎng)?chuàng)建一個(gè)虛擬的、看不見(jiàn)但是可以在上面畫(huà)圖(

    2024年02月02日
    瀏覽(20)
  • 基于C#的畫(huà)圖應(yīng)用程序(窗體應(yīng)用程序)C#組件、控件

    基于C#的畫(huà)圖應(yīng)用程序(窗體應(yīng)用程序)C#組件、控件

    ? 使用VS2019,建立窗體應(yīng)用程序,借助一系列控件實(shí)現(xiàn)畫(huà)圖功能。 ? 結(jié)合組件與控件的使用。 目錄 一、預(yù)備知識(shí) 1、什么是C#的組件和控件 (1)共同點(diǎn) (2)不同點(diǎn) 二、主要步驟 1、軟件以及環(huán)境 2、設(shè)置接口 3、界面設(shè)計(jì) 4、編寫(xiě)代碼 5、編譯程序和運(yùn)行 三、編寫(xiě)代碼 1、設(shè)

    2023年04月08日
    瀏覽(22)
  • C#Winform中DataGridView控件根據(jù)鼠標(biāo)左右鍵獲取單元格值或者行列

    有多種方法可以獲取單元格的值或者行列,此處選用了兩種方式去獲取分別用了CurrentCell方法和Rows[].Cells[]的方法去獲取行列值 鼠標(biāo)左鍵獲取單獨(dú)行列值 此處獲取左鍵行列值的觸發(fā)條件是表格中數(shù)據(jù)變化獲取,對(duì)應(yīng)DataGridView事件CellValueChanged。 用方法CurrentCell中的Value,RowIndex

    2024年02月09日
    瀏覽(20)
  • C#使用DataGridView模擬繪圖

    C#使用DataGridView模擬繪圖

    接到一個(gè)需求,繪制一個(gè)水管線的圖片,這種管線可以有12種分段方法,最后將這12種分段方法合并后在一條水管線上展示,要求: ⒈支持分段的屬性展示; ⒉要求每個(gè)分段都能清晰展示,分段數(shù)在0(沒(méi)有分段)~100之間,水管線長(zhǎng)度不定; 3、每個(gè)分段的屬性都有值,可以更

    2024年02月16日
    瀏覽(21)
  • C#:WinForm應(yīng)用程序中用鼠標(biāo)移動(dòng)控件位置

    有時(shí)候在WinForm程序中,我們需要用鼠標(biāo)移動(dòng)程序窗口中的對(duì)象(例如圖片對(duì)象等)的位置,可以通過(guò)定義控件的鼠標(biāo)事件來(lái)實(shí)現(xiàn)。以命名為pictureBox1的PictureBox控件為例,分別定義它的MouseDown(按下鼠標(biāo)按鈕)、MouseMove(移動(dòng)鼠標(biāo))、MouseUp(釋放鼠標(biāo)按鈕)三個(gè)事件,代碼如

    2024年02月16日
    瀏覽(33)
  • C# DataGridView數(shù)據(jù)導(dǎo)出Excel文件

    C# DataGridView數(shù)據(jù)導(dǎo)出Excel文件

    博主在做項(xiàng)目的時(shí)候需要把數(shù)據(jù)庫(kù)的數(shù)據(jù)用DataGridView展示,然后把展示的數(shù)據(jù)導(dǎo)出為Excel文件,很多時(shí)候我們做項(xiàng)目都會(huì)有一個(gè)下載文件的按鈕,我們需要用微軟的的接口,Microsoft.Office.Interop.Excel,我們需要導(dǎo)入這個(gè)引用對(duì)DataGridView數(shù)據(jù)進(jìn)行處理,利用Microsoft.Office.Interop.Exc

    2024年02月04日
    瀏覽(23)
  • C# Winform DataGridView 數(shù)據(jù)刷新問(wèn)題

    C# Winform DataGridView 數(shù)據(jù)刷新問(wèn)題

    目錄 一、問(wèn)題 二、創(chuàng)建項(xiàng)目 三、綁定空的數(shù)據(jù)源 四、綁定有數(shù)據(jù)的數(shù)據(jù)源 五、修改綁定的數(shù)據(jù)源 六、解決數(shù)據(jù)源刷新問(wèn)題 七、解決刷新數(shù)據(jù)界面閃爍 DataGridView 是比較常用的表格控件,在 DataGridView 中顯示數(shù)據(jù),?一般使用 dataGridView1.DataSource = 數(shù)據(jù)源,來(lái)綁定數(shù)據(jù),數(shù)據(jù)

    2024年02月12日
    瀏覽(19)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包