zoukankan      html  css  js  c++  java
  • C# WinForm DataGridView DataGridViewButtonColumn列禁用

    先添加一下两个类

    #region 禁用 DataGridViewButtonColumn
    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);
    }
    }
    }
    #endregion

    若DataGridView 已绑定数据使用以下方法

    private void DisableButtonCell(DataGridView dgv,string strKey)
    {
    for (int j = 0; j < dgv.RowCount; j++)
    {
    if (dgv.Rows[j].Cells[strKey].Value.ToString() == "要禁用的数据值")
    {
    if (dgv.Rows[j].Cells[strKey] is DataGridViewDisableButtonCell)
    ((DataGridViewDisableButtonCell)dgv.Rows[j].Cells[strKey]).Enabled = false;    //禁用

    }
    }
    }

  • 相关阅读:
    依赖倒置原则
    接口声明
    java泛型
    RandomAccessFile
    InputStreamReader/OutputStreamWriter乱码问题解决
    InputStreamReader和OutputStreamWriter
    Android开发UI之Notification
    Android开发UI之Toast的使用
    Android开发之PagerAdapter
    Android开发UI之ViewPager及PagerAdapter
  • 原文地址:https://www.cnblogs.com/hefy/p/7698526.html
Copyright © 2011-2022 走看看