91网首页-91网页版-91网在线观看-91网站免费观看-91网站永久视频-91网站在线播放

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

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

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

前言

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

本文將介紹如何在 WinForm 中使用 DataGridView 控件,并通過添加"編輯"和"刪除"按鈕實(shí)現(xiàn)對每一行數(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),可自定義單元格外觀;

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

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

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

這些特性使得 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è)對話框讓用戶編輯信息
        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)按鈕列及其事件處理。對于剛接觸 WinForm 開發(fā)的新手來說,這是一個(gè)實(shí)用且易于理解的功能點(diǎn),能夠幫助大家快速掌握數(shù)據(jù)表格操作的核心技巧。


閱讀原文:原文鏈接


該文章在 2025/5/19 10:02:24 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對港口碼頭集裝箱與散貨日常運(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倉儲管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 麻花影视最 | 国产欧美精品区一区 | 午夜福利院在线观看 | 国产成+| 成人三级网站精品 | 国产高清在线精 | 国产精品手机在线 | 精品一二三四区 | 日韩成人影片 | 精品视频大全 | 欧美亚洲日韩综艺 | 欧美性性性 | 国产精品第一二三区 | 日本欧美女优在线 | 欧美一区日韩专区 | 午夜三级a三级 | 国产黄在线视频免费 | 国产激情视频网站 | 尤物视频在线网站 | 精品一区二区ww | 成人免费一级纶理片 | 国产在线午夜不 | 午夜免费福利体验 | 中文字幕制人妖 | 无码av在线播放专区 | 国产手机自拍视频 | 国产日本视频 | 福利一区二区 | 91.精品国产 | 精品第一区二区三区 | 国产日韩精品一区二 | 精品国产综合区 | 日本伦理片在线播放 | 日本大骚b视频 | 久热青草 | 91九色最新国产 | 国产精品污www| 福利所第一导航 | 区三区蜜月 | 91黑丝系列 | 午夜色综合 |