`
LiuXiaoYong
  • 浏览: 31737 次
  • 性别: Icon_minigender_1
  • 来自: 惠州
社区版块
存档分类
最新评论

C#如何禁用datagridview控件中的button控件

    博客分类:
  • .NET
阅读更多
DataGridView 控件包括 DataGridViewButtonCell 类,该类用于显示具有类似按钮的用户界面 (UI) 的单元格。但 DataGridViewButtonCell 不提供禁用由单元格显示的按钮外观的方式。

下面的代码示例演示如何自定义 DataGridViewButtonCell 类来显示可以显示为禁用的按钮。本示例定义一个新的单元格类型 DataGridViewDisableButtonCell,它由 DataGridViewButtonCell 派生。此单元格类型提供一个新的 Enabled 属性,可以将该属性设置为 false 来在单元格中绘制禁用的按钮。本示例还定义一个新的列类型 DataGridViewDisableButtonColumn,它显示 DataGridViewDisableButtonCell 对象。为了演示此新单元格类型和列类型,父 DataGridView 中的每个 DataGridViewCheckBoxCell 的当前值确定同一行中 DataGridViewDisableButtonCell 的 Enabled 属性是 true 还是 false。

首先要在代码中加入下面两个继承类:
public class DataGridViewDisableButtonColumn : DataGridViewButtonColumn
    {
        public DataGridViewDisableButtonColumn()
        {
            this.CellTemplate = new DataGridViewDisableButtonCell();
        }
    }

    public class DataGridViewDisableButtonCell : DataGridViewButtonCell
    {
        private bool enabledValue;
        public bool Enabled
        {
            get
            {
                return enabledValue;
            }
            set
            {
                enabledValue = value;
            }
        }

        public override object Clone()
        {
            DataGridViewDisableButtonCell cell =
                (DataGridViewDisableButtonCell)base.Clone();
            cell.Enabled = this.Enabled;
            return cell;
        }

        public DataGridViewDisableButtonCell()
        {
            this.enabledValue = true;
        }

        protected override void Paint(Graphics graphics,
            Rectangle clipBounds, Rectangle cellBounds, int rowIndex,
            DataGridViewElementStates elementState, object value,
            object formattedValue, string errorText,
            DataGridViewCellStyle cellStyle,
            DataGridViewAdvancedBorderStyle advancedBorderStyle,
            DataGridViewPaintParts paintParts)
        {
            if (!this.enabledValue)
            {
                if ((paintParts & DataGridViewPaintParts.Background) ==
                    DataGridViewPaintParts.Background)
                {
                    SolidBrush cellBackground =
                        new SolidBrush(cellStyle.BackColor);
                    graphics.FillRectangle(cellBackground, cellBounds);
                    cellBackground.Dispose();
                }

                if ((paintParts & DataGridViewPaintParts.Border) ==
                    DataGridViewPaintParts.Border)
                {
                    PaintBorder(graphics, clipBounds, cellBounds, cellStyle,
                        advancedBorderStyle);
                }
                Rectangle buttonArea = cellBounds;
                Rectangle buttonAdjustment =
                    this.BorderWidths(advancedBorderStyle);
                buttonArea.X += buttonAdjustment.X;
                buttonArea.Y += buttonAdjustment.Y;
                buttonArea.Height -= buttonAdjustment.Height;
                buttonArea.Width -= buttonAdjustment.Width;
                ButtonRenderer.DrawButton(graphics, buttonArea,
                    System.Windows.Forms.VisualStyles.PushButtonState.Disabled);

                if (this.FormattedValue is String)
                {
                    TextRenderer.DrawText(graphics,
                        (string)this.FormattedValue,
                        this.DataGridView.Font,
                        buttonArea, SystemColors.GrayText);
                }
            }
            else
            {
                base.Paint(graphics, clipBounds, cellBounds, rowIndex,
                    elementState, value, formattedValue, errorText,
                    cellStyle, advancedBorderStyle, paintParts);
            }
        }
    }


datagridview的button控件要在代码里面加入:
如加入编辑按钮:
DataGridViewDisableButtonColumn btn_ProEdit = new DataGridViewDisableButtonColumn();
            btn_ProEdit.HeaderText = l.ALanuageBinding("gv_Action");
            btn_ProEdit.Text = l.ALanuageBinding("gv_Edit");
            btn_ProEdit.Name = "btn_ProEdit";
            btn_ProEdit.Width = 50;
            btn_ProEdit.UseColumnTextForButtonValue = true;
this.datagridview1.Columns.Add(btn_ProEdit);


禁用:
DataGridViewDisableButtonCell buttonCell = (DataGridViewDisableButtonCell)dgv_Promotiom.Rows[i].Cells["btn_ProEdit"];

                        buttonCell.Enabled = false;
分享到:
评论

相关推荐

    基于C#的WinForm中DataGridView控件操作汇总

    "基于C#的WinForm中DataGridView控件操作汇总" 在C#的WinForm中,DataGridView控件是一种常见的控件,用于显示和编辑表格数据。下面将对DataGridView控件的操作进行汇总。 一、单元格内容的操作 在DataGridView...

    C# .Net DataGridView控件使用大全

    C# .Net DataGridView控件使用大全(含有代码演示)

    C#如何禁用Windows 窗体 DataGridView 控件的按钮列中的按钮

    代码示例演示如何自定义 ... 为了演示此新单元格类型和列类型,父 DataGridView 中的每个 DataGridViewCheckBoxCell 的当前值确定同一行中 DataGridViewDisableButtonCell 的 Enabled 属性是 true 还是 false。

    控件代码C#通过修改datagridview控件来修改access数据

    本篇文章主要介绍了如何在C#应用程序中使用DataGridView控件与Microsoft Access数据库进行交互,实现数据显示及更新的功能。通过一个简单的示例程序,我们能够了解到如何加载Access数据库到DataGridView,并通过用户...

    DataGridView添加禁用的Button列

    在C#编程中,`DataGridView`控件是一个非常常用的数据展示工具,它可以显示表格形式的数据并允许用户进行交互。在实际应用中,我们有时需要在`DataGridView`的每一行中添加一个`Button`列,以便用户可以执行特定操作...

    c# 中datagridView中删除行的经典操作

    本文将详细介绍如何在 `DataGridView` 控件中实现删除行的功能,并通过具体的代码示例来解释其工作原理。 #### 一、DataGridView 删除行的基本方法 在大多数情况下,我们可以通过简单的 `Remove` 方法来删除 `...

    c#打印datagridview数据

    在C#开发中,经常需要将DataGridView中的数据导出或打印。本知识点详细介绍了一个用于打印DataGridView数据的解决方案,该方案包含了一个打印设置窗体和一个专门负责打印逻辑的类。通过这种方式,可以有效地管理打印...

    C# Winform Datagridview控件使用和详解

    2、设置列单元格不同的控件形式(TextBox,Button,ComboBox,CheckBox,Image,Link) 3、单元格显示多个控件,及控件绑定行,列信息 4、编辑,删除行数据 5、复制表格和单元格数据 6、查询,定位表格数据 7、Datagridview...

    C#控件大全(C#所有的控件)

    C#控件大全是指C#语言中提供的所有控件的集合,包括窗体、按钮、文本框、列表框、组合框、checkbox、RadioButton、 label、ProgressBar、TextBox、RichTextBox、DataGridView、ListView、TreeView等。这些控件都是C#...

    C#动态绑定datagridview单元格控件

    ### C# 动态绑定 DataGridView 单元格控件 在使用 Windows Forms 开发应用程序时,经常需要将数据展示在 DataGridView 控件上,并且有时还需要为特定列提供更丰富的交互功能,例如使用 ComboBox 控件来作为单元格。...

    JS+CSS+DIV+Table实现C#中DataGridView控件可修改单元格的值(上次上传那个资源丢失了)

    在本文中,我们将深入探讨如何使用JavaScript、CSS、DIV和HTML Table来实现C#中DataGridView控件的功能,尤其是实现单元格的动态编辑。在.NET框架下,DataGridView是用于展示和编辑数据的强大控件,但在Web环境中,...

    C# Winform遍历控件(窗体、Panel的子控件)Controls

    ### C# Winform遍历控件(窗体、Panel的子控件...通过以上介绍,我们可以了解到如何在C# Winform开发中有效地遍历窗体和Panel中的控件。这不仅能够帮助我们更好地管理和操作控件,还能让我们的应用程序更加灵活和强大。

    C#DataGridView操作

    在 DataGridView 控件中,可以通过 CurrentCell 属性来取得当前单元格的内容。例如: ```csharp Console.WriteLine(DataGridView1.CurrentCell.Value); ``` 此外,还可以通过 CurrentCell 属性来取得当前单元格的列 ...

    C#常用工业控件及使用方法

    在C#中,使用DataGridView控件,可以轻松创建和编辑表格。通过DataSource属性绑定数据源,Columns属性定义列,Rows属性管理行,还可以自定义单元格样式和行为。 四、数据可视化控件 数据可视化控件如图表、曲线图,...

    C# 异步刷新控件

    本主题将深入探讨如何异步刷新TextBox和DataGridView控件,以避免阻塞UI线程,提供更好的用户体验。 首先,我们来了解异步编程的基本概念。在C#中,异步编程主要基于.NET Framework 4.5引入的`async`和`await`...

    c# winform DataGridView 高级特性

    DataGridView 控件是 C# WinForms 开发中用于显示和编辑表格数据的关键组件,它在 Windows Forms 2.0 中替代了旧版的 DataGrid 控件。这个控件提供了更丰富的功能和更高的自定义程度,能够满足多种复杂的数据展示...

    c# winform dataGridView鼠标拖拽到textBox里显示数据,鼠标拖动

    在C# WinForm开发中,dataGridView控件常用于展示数据表格,而textBox控件则用于接收和显示单行文本。本教程将详细讲解如何实现一个功能,即通过鼠标拖拽dataGridView中的数据到textBox中显示。这个功能对于数据的...

    C# windows datagridview表格行上下拖动示例

    在C# Windows应用程序开发中,`DataGridView`是一个常用的控件,用于显示数据表格。这个控件提供了丰富的功能,包括编辑、排序、分页等。在某些场景下,用户可能需要手动调整行的顺序,比如在任务管理器或日程表应用...

    C#控件随窗口变化而变化,同时panel中的控件也变化,代码实现

    在C#编程中,创建一个用户界面(UI)时,我们常常希望窗口的大小调整能够影响到其中的控件布局,使控件随着窗口尺寸的变化而自动调整位置和大小。这个过程通常涉及到控件的自动布局和锚点设置。本文将深入探讨如何...

    【C#源码】DataGridView复制粘贴

    在C#编程中,`DataGridView`控件是一个用于显示数据表格的强大工具,它允许用户以交互方式查看和编辑数据。本篇文章将深入探讨如何实现`DataGridView`中的复制和粘贴功能,使其操作体验类似Excel。 ### 1. `...

Global site tag (gtag.js) - Google Analytics