日韩欧美人妻无码精品白浆,夜夜嗨AV免费入口,国产欧美官网在线看,高校回应聋哑女生因长相完美被质疑

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

WinForm 中如何給每一行 DataGridView 添加編輯刪除按鈕

admin
2025年5月18日 9:44 本文熱度 500

前言

WinForm 是 Microsoft .NET Framework 提供的一個(gè)圖形用戶界面(GUI)開發(fā)框架,憑借其簡單易用、功能豐富的特性,成為許多開發(fā)快速開發(fā)桌面應(yīng)用程序的首選工具。在實(shí)際開發(fā)中,經(jīng)常需要展示和操作表格數(shù)據(jù),這時(shí) DataGridView 控件就顯得尤為重要。

本文將介紹如何在 WinForm 中使用 DataGridView 控件,并通過添加"編輯"和"刪除"按鈕實(shí)現(xiàn)對(duì)每一行數(shù)據(jù)的交互式操作。

文章案例基于 Visual Studio 2022 編寫,適合初學(xué)者快速上手并掌握該控件的核心使用方法。

#WinForm開發(fā)技巧

DataGridView 控件

DataGridView 是 Windows Forms 中一個(gè)非常強(qiáng)大且靈活的表格控件,用于顯示和編輯結(jié)構(gòu)化數(shù)據(jù)。它取代了舊版本中的 DataGrid 控件,提供了更豐富的功能和更好的用戶體驗(yàn)。

主要特性包括:

  • 支持綁定多種類型的數(shù)據(jù)源,如 DataTable、List<T> 和數(shù)組;

  • 提供豐富的樣式設(shè)置選項(xiàng),可自定義單元格外觀;

  • 支持排序、篩選和分組等高級(jí)功能;

  • 自定義列類型,如文本框、復(fù)選框、下拉框等;

  • 可動(dòng)態(tài)添加或刪除行與列,支持單元格級(jí)別的編輯操作。

這些特性使得 DataGridView 成為 WinForm 開發(fā)中最常用的數(shù)據(jù)顯示控件之一。

運(yùn)行效果

?
代碼實(shí)現(xiàn)

DataGridView 中添加編輯與刪除按鈕.

1、窗體代碼

public partialclassForm1 : Form
{
    private BindingSource bindingSource = new BindingSource();
    private List<Student> students = new List<Student>();
    privateint currentPage = 0;
    privateint pageSize = 10;
    public Form1()
    {
        InitializeComponent();
        CenterToParent();
        CenterToScreen();
        LoadData();
        // 設(shè)置分頁
        bindingSource.DataSource = GetPagedData(0, pageSize);
        dataGridView1.DataSource = bindingSource;
        // 添加編輯按鈕列
        DataGridViewButtonColumn editButtonColumn = new DataGridViewButtonColumn();
        editButtonColumn.Name = "Edit";
        editButtonColumn.HeaderText = "編輯";
        editButtonColumn.Text = "編輯";
        editButtonColumn.UseColumnTextForButtonValue = true;
        dataGridView1.Columns.Add(editButtonColumn);
        // 添加刪除按鈕列
        DataGridViewButtonColumn deleteButtonColumn = new DataGridViewButtonColumn();
        deleteButtonColumn.Name = "Delete";
        deleteButtonColumn.HeaderText = "刪除";
        deleteButtonColumn.Text = "刪除";
        deleteButtonColumn.UseColumnTextForButtonValue = true;
        dataGridView1.Columns.Add(deleteButtonColumn);
        Label_CurrentPageShow.Text = $"{currentPage+1}/{students.Count / 10}";
    }
    private void Form1_Load(object sender, EventArgs e)
    { 
    }
    private void LoadData()
    {
        // 假設(shè)我們有一些數(shù)據(jù)
        for (int i = 1; i <= 100; i++)
        {
            string id = (10000+i).ToString();
            students.Add(new Student { ID = id, Name = "Name" + i, Major = "Major" + i });
        }
    }
    private List<Student> GetPagedData(int pageIndex, int pageSize)
    {
        return students.Skip(pageIndex * pageSize).Take(pageSize).ToList();
    }
    private void btnPrevious_Click(object sender, EventArgs e)
    {
        if (currentPage > 0)
        {
            currentPage--;
            bindingSource.DataSource = GetPagedData(currentPage, pageSize);
            ShowPageNumber();
        }
    }
    private void btnNext_Click(object sender, EventArgs e)
    {
        if ((currentPage + 1) * pageSize < students.Count)
        {
            currentPage++;
            bindingSource.DataSource = GetPagedData(currentPage, pageSize);
            ShowPageNumber();
        }
    }
    private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
    {
        if (e.RowIndex >= 0)
        {
            // 獲取當(dāng)前行的數(shù)據(jù)
            var student = (Student)bindingSource[e.RowIndex];
            if (e.ColumnIndex == dataGridView1.Columns["Edit"].Index)
            {
                // 編輯操作
                EditStudent(student);
            }
            elseif (e.ColumnIndex == dataGridView1.Columns["Delete"].Index)
            {
                // 刪除操作
                DeleteStudent(student);
            }
        }
    }
    private void EditStudent(Student student)
    {
        // 編輯邏輯,例如彈出一個(gè)對(duì)話框讓用戶編輯信息
        MessageBox.Show($"編輯: {student.Name}");
    }
    private void DeleteStudent(Student student)
    {
        if (MessageBox.Show($"刪除用戶:{student.Name}""確認(rèn)刪除?", MessageBoxButtons.YesNo)== DialogResult.Yes)
        {
            // 刪除邏輯
            students.Remove(student);
            bindingSource.DataSource = GetPagedData(currentPage, pageSize);
            MessageBox.Show($"刪除成功: {student.Name}");
        }
    }
    InputBox inputBox = new InputBox();
    private void Btn_Add_Click(object sender, EventArgs e)
    {
        if (inputBox.OnValueComfirmChanged==null)
        {
            inputBox.OnValueComfirmChanged += ValueComfirmChangedCallback;
        }
        inputBox.Show();  
    }
    private void ValueComfirmChangedCallback(object sender, object receiver)
    {
        if(receiver!=null &&  receiver is Student)
        {
            Student student = (Student)receiver;
            student.ID = (10000 + students.Count).ToString();
            students.Add(student);
            ShowPageNumber();
        }
        inputBox.Hide();
    }
    public void ShowPageNumber()
    {
        int pageNum = 0;
        if (students.Count % 10>0)
        {
            pageNum = students.Count / 10+1;
        }
        else
        {
            pageNum = students.Count / 10;
        }
        Label_CurrentPageShow.Text = $"{currentPage + 1}/{pageNum}";
    }
}

2、數(shù)據(jù)代碼

public classStudent
{
    publicstring ID { getset; }
    publicstring Name { getset; }
    publicstring Major { getset; }
    public Student()
    {
    }
    public Student(string name ,string major)
    {
        Name = name;
        Major = major;
    }
}

3、輸入框代碼

public delegate void ValueComfirmChanged(object sender ,object receiver);
public ValueComfirmChanged OnValueComfirmChanged;
public InputBox()
{
    InitializeComponent();
    this.CenterToParent();
}
private void Btn_Comfirm_Click(object sender, EventArgs e)
{
    OnValueComfirmChanged?.Invoke(thisnew Student(Tbx_Name.Text,Tbx_Major.Text));
}
private void Btn_Cancel_Click(object sender, EventArgs e)
{
    Tbx_Name.Clear();
    Tbx_Major.Clear();
    this.Hide();
}

總結(jié)

DataGridView 是 WinForm 開發(fā)中不可或缺的數(shù)據(jù)展示控件,具備強(qiáng)大的功能和高度的可定制性。通過使用 DataGridViewButtonColumn,我們可以輕松地為每一行添加"編輯"和"刪除"按鈕,提升用戶操作的便捷性和直觀性。

本文介紹了 DataGridView 的基本特性和使用方式,并詳細(xì)演示了如何通過代碼實(shí)現(xiàn)按鈕列及其事件處理。對(duì)于剛接觸 WinForm 開發(fā)的新手來說,這是一個(gè)實(shí)用且易于理解的功能點(diǎn),能夠幫助大家快速掌握數(shù)據(jù)表格操作的核心技巧。


閱讀原文:原文鏈接


該文章在 2025/5/19 10:02:24 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲(chǔ)管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved