C# 给DataGridView的column定制DefaultCellStyle代码问题

塔克茜丝 2021-04-15 02:09:15
在做dgv,给代码实现列格式。

现在我想给单独一列中的字体改变,直接在add中添加
dgv.Columns.Add(
new DataGridViewTextBoxColumn
{
ReadOnly = true,
Visible = true,
HeaderText = "状态",
Name = "Status",
DataPropertyName = "Status",
AutoSizeMode= DataGridViewAutoSizeColumnMode.ColumnHeader,
DefaultCellStyle=????
}
);

在VS的UI界面设置中,有defaultCellstyle,里面是一大块设置的地方。
但是在designer.cs中找不到。

从界面里copy出来的是这个。
DataGridViewCellStyle { BackColor=Color [ButtonHighlight], ForeColor=Color [ControlText], Font=[Font: Name=微软雅黑, Size=12, Units=3, GdiCharSet=134, GdiVerticalFont=False], Format=g, Alignment=MiddleCenter }

那我在上面的new中怎么写代码呢?到时有DefaultCellStyle,但是后面怎么写,不知道,望赐教
...全文
353 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
morliz子轩 2021-04-28
  • 打赏
  • 举报
回复
引用 8 楼 塔克茜丝 的回复:
受教了,懂了,多谢
不客气,可以的话就结贴吧
塔克茜丝 2021-04-28
  • 打赏
  • 举报
回复
受教了,懂了,多谢
morliz子轩 2021-04-16
  • 打赏
  • 举报
回复
DataGridView控件(简称dgv),在对数据表样式配置,一般有三种情景方式: 1、在创建Columns列对象时,添加配置; 2、在已经 生成的dgv中,更新表样式,它即可以是rows,也可以是columns,甚至是cells。都可以灵活的配置。 3、在重载数据源时,view(表头)发生改变时,也可以重新配置表样式。 这也是外同人习惯的逻辑思维,发生前,发生中和发生后的三种变化。
90e家 2021-04-16
  • 打赏
  • 举报
回复
格式化列也是可以的,根据列值的不一样显示不同的颜色样式都是可以的
six2me 2021-04-16
  • 打赏
  • 举报
回复
DefaultCellStyle.ForeColor = Color.Black; DefaultCellStyle.Font = new Font("宋体", 20); 这样写不行吗
morliz子轩 2021-04-16
  • 打赏
  • 举报
回复
这个很容易理解,看demo:

        /// <summary>
        /// 创建基于DataGridView文本控件
        /// </summary>
        /// <param name="TextName">对象Name</param>
        /// <param name="HeaderCaption">对象HeaderText</param>
        /// <param name="DataFieldName">对象DataPropertyName</param>
        /// <returns></returns>
        private static DataGridViewTextBoxColumn CreaTextBoxColumn(string TextName, string HeaderCaption, string DataFieldName, bool visible = true)
        {
            DataGridViewTextBoxColumn column = new DataGridViewTextBoxColumn()
            {
                Name = TextName,
                HeaderText = HeaderCaption,
                DataPropertyName = DataFieldName,
                SortMode = DataGridViewColumnSortMode.NotSortable,
                DefaultCellStyle = CellStyle(CellStyleState.textCellStyle),
                ReadOnly = true,
                Visible = visible
            };
            return column;
        }

/// <summary>
        /// 设定数据表样式
        /// </summary>
        /// <param name="state"></param>
        /// <returns></returns>
        public static DataGridViewCellStyle CellStyle(CellStyleState state)
        {
            //文本单元格样式
            DataGridViewCellStyle textCellStyle = new DataGridViewCellStyle
            {
                Alignment = DataGridViewContentAlignment.MiddleCenter,
                BackColor = SystemColors.Window,
                Font = new Font("宋体", 9F, FontStyle.Regular, GraphicsUnit.Point, 134),
                ForeColor = SystemColors.ControlText,
                SelectionBackColor = SystemColors.Highlight,
                SelectionForeColor = SystemColors.HighlightText,
                WrapMode = DataGridViewTriState.False
            };

            //行标题样式
            DataGridViewCellStyle rowHeaderCellStyle = new DataGridViewCellStyle
            {
                Alignment = DataGridViewContentAlignment.MiddleCenter,
                BackColor = SystemColors.Control,
                Font = new Font("宋体", 9F, FontStyle.Regular, GraphicsUnit.Point, 134),
                ForeColor = SystemColors.WindowText,
                SelectionBackColor = SystemColors.Highlight,
                SelectionForeColor = SystemColors.HighlightText,
                WrapMode = DataGridViewTriState.False
            };

            //数值单元格样式
            DataGridViewCellStyle decimalCellStyle = new DataGridViewCellStyle
            {
                Format = "N2"
            };

            //选中行样式
            DataGridViewCellStyle changedCellStyle = new DataGridViewCellStyle
            {
                BackColor = Color.LightGray,
                //ForeColor = Color.LightYellow,
                SelectionBackColor = SystemColors.Highlight,
                SelectionForeColor = SystemColors.HighlightText,
                WrapMode = DataGridViewTriState.False
            };

            switch (state)
            {
                case CellStyleState.textCellStyle:
                    return textCellStyle;
                case CellStyleState.rowHeaderCellStyle:
                    return rowHeaderCellStyle;
                case CellStyleState.decimalCellStyle:
                    return decimalCellStyle;
                case CellStyleState.changedCellStyle:
                    return changedCellStyle;
                default:
                    return textCellStyle;
            }

        }

public static DataGridView InitDgvJobFace(ref DataGridView dgv)
        {
            DataGridView DgvJob = dgv;

            //【BranJob】列初始化
            DataGridViewCheckBoxColumn multiselect = CreateCheckColumn("multiselect", "选择");

            DataGridViewTextBoxColumn id = CreaTextBoxColumn("id", "内码标识", "BranjobId", false);
            DataGridViewComboBoxColumn jobna = CreateComboBoxColumn("jobna", "职位名称", "Jobno");
            SetAlternateChoicesUsingItems(jobna);

            DataGridViewTextBoxColumn planqty = CreaTextBoxColumn("planqty", "定编人数", "Planqty");

            DataGridViewTextBoxColumn jobqty = CreaTextBoxColumn("jobqty", "实际人数", "Jobqty");
            DataGridViewTextBoxColumn lackqty = CreaTextBoxColumn("lackqty", "欠缺人数", "Lackqty");

            DataGridViewTextBoxColumn overtime = CreaTextBoxColumn("overtime", "固定加班小时", "Overtime");
            overtime.DefaultCellStyle = CellStyle(CellStyleState.decimalCellStyle);


            //添加到DataGridView对象
            DgvJob.Columns.AddRange(new DataGridViewColumn[]
            {
                id,
                jobna,
                planqty,
                jobqty,
                lackqty,
                overtime
            });
            //插入多选[列]
            DgvJob.Columns.Insert(0, multiselect);
            InitDgv(DgvJob);

            return DgvJob;
        }

    [Flags]
    public enum CellStyleState
    {
        textCellStyle = 0,
        rowHeaderCellStyle = 1,
        decimalCellStyle = 2,
        changedCellStyle = 3
    };
看不懂的话,再提问。
塔克茜丝 2021-04-15
  • 打赏
  • 举报
回复
这个我知道,我就是想在add的时候,new 的时候直接设置好,代码怎么写呢?
six2me 2021-04-15
  • 打赏
  • 举报
回复
dataGridView1.Columns[0].DefaultCellStyle.ForeColor = Color.Red; dataGridView1.Columns[0].DefaultCellStyle.Font = new Font("宋体", 10); dataGridView1.Columns[1].DefaultCellStyle.ForeColor = Color.Black; dataGridView1.Columns[1].DefaultCellStyle.Font = new Font("宋体", 20);
90e家 2021-04-15
  • 打赏
  • 举报
回复
可以在格式化函数里面处理某一列的样式 例如这样 this.dgvResult.Rows[e.RowIndex].Cells["ResultAbnormal"].Style.BackColor = Color.FromArgb(251, 202, 210);

111,098

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧