首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在Winforms Datagridview中实现单元格的矩形而不是相对的GetCellDisplayRectangle()

在Winforms Datagridview中实现单元格的矩形而不是相对的GetCellDisplayRectangle(),可以通过自定义绘制单元格的方式来实现。

首先,需要在DataGridView的CellPainting事件中进行处理。在该事件中,可以获取到要绘制的单元格的位置和大小等信息。

以下是一个示例代码,演示如何在Winforms Datagridview中实现单元格的矩形:

代码语言:txt
复制
private void dataGridView1_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
{
    if (e.RowIndex >= 0 && e.ColumnIndex >= 0)
    {
        // 获取单元格的矩形区域
        Rectangle cellRect = dataGridView1.GetCellDisplayRectangle(e.ColumnIndex, e.RowIndex, true);

        // 绘制单元格的矩形边框
        using (Pen pen = new Pen(Color.Red, 2))
        {
            e.Graphics.DrawRectangle(pen, cellRect);
        }

        // 绘制单元格的内容
        if (e.Value != null)
        {
            using (Brush brush = new SolidBrush(e.CellStyle.ForeColor))
            {
                e.Graphics.DrawString(e.Value.ToString(), e.CellStyle.Font, brush, cellRect.X + 2, cellRect.Y + 2);
            }
        }

        // 取消默认绘制
        e.Handled = true;
    }
}

在上述代码中,我们首先判断当前绘制的单元格是否为有效的单元格(排除表头等特殊单元格)。然后,通过调用GetCellDisplayRectangle方法获取单元格的矩形区域。接着,使用Graphics对象绘制矩形边框,并根据需要绘制单元格的内容。最后,将Handled属性设置为true,取消默认的绘制。

这样,就可以在Winforms Datagridview中实现单元格的矩形而不是相对的GetCellDisplayRectangle()。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云云服务器(CVM):https://cloud.tencent.com/product/cvm
  • 腾讯云云数据库 MySQL 版:https://cloud.tencent.com/product/cdb_mysql
  • 腾讯云对象存储(COS):https://cloud.tencent.com/product/cos
  • 腾讯云人工智能:https://cloud.tencent.com/product/ai
  • 腾讯云物联网通信(IoT):https://cloud.tencent.com/product/iotexplorer
  • 腾讯云移动开发:https://cloud.tencent.com/product/mobile
  • 腾讯云区块链服务(BCS):https://cloud.tencent.com/product/bcs
  • 腾讯云元宇宙:https://cloud.tencent.com/product/vr
  • 腾讯云安全产品:https://cloud.tencent.com/product/security
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

DataGridView控件中加入ComboBox下拉列表框实现

控件DataGridViewComboBoxColumn可以实现下拉列表框,但这样列会在整列中都显示下拉列表框,不太美观,而且还要用代码实现数据绑定。...本文介绍一种只在当前编辑单元格显示下拉列表框方法,供大家参考。   ...(或者数据集),然后绑定到DataGridView,这里我们为了避免连接数据库,手中构造一个数据库表,代码如下: private void BindData() {     DataTable dtData...dgv_User_ColumnWidthChanged(object sender, DataGridViewColumnEventArgs e) {     this.cmb_Temp.Visible = false; }   绑定数据表后将性别列每一单元格...DataGridViewColumnEventArgs e)         {             this.cmb_Temp.Visible = false;         }         // 绑定数据表后将性别列每一单元格

3.7K20

C#——DataGridView控件填写数据事件

对于DataGridView控件,与单元格内容相关有以下这几个事件: // 当单元格内容改变并且提交之后发生(提交一般是单元格在编辑完之后失去焦点...e) { } // 在单元格状态相对于其内容更改更改时发生。...private void dataGridView_CellEndEdit(object sender, DataGridViewCellEventArgs e) { } 但是以上这几个事件都不能实现每次向单元格输入新内容时发生...EditingControlShowing事件比上述事件还要早发生,他是dataGridView控件为了使用户可以编辑,加载一个TextBox(如果单元格时复选框,是其他控件,那么就加载对应控件)...,加载TextBox时这个事件发生,可以在时间参数获取这个TextBox引用,动态注册一个事件即可。

1.6K62
  • 可视化数据库设计软件有哪些_数据库可视化编程

    4)ListBox控件 1.作用 作用1:用列表方式显示数据表某字段值。 作用2:通过连接字段绑定,使主表(tblClass)与代码表(tblStatus)建立连接。...6)DataGridView 控件 DataGridView 控件提供一种强大灵活以表格形式显示数据方式。...属性:表示记录(行)第j个字段(单元格)。...5.DataGridView编辑 单击DataGridView控件设计器“编辑列”选项,或者在DataGridView控件“属性”面板单击Columns属性右侧省略按钮,即可进入“编辑列...记录行显示样式是通过单元格外观设置实现,所以其编辑界面与“CellStyle生成器”界面相同,参见图5-26。

    6.7K40

    Excel催化剂开源第23波-VSTO开发辅助录入功能关键技术

    一般来说控件都是放到窗体或任务窗格,但Excel同样支持将控件放到工作表单元格上,如前面提到picturebox容器,放到单元格区域上,然后在容器上发图片,实现插入图片功能,同样地也可以存放单选、复选这些控件...自定义控件,可直接用到工作表单元格 具体实现原理 通过用户配置操作,将需要进行快速录入区域记录下来,用SelectionChange事件来响应,若用户选择到这些单元格时,就激发事件方法,显示自定义控件...输入过程动态控制下方DataGridView查找结果,用户可以按方向箭下上在结果中选择对应条目,再按Enter或Tab键确定内容录入。...FormFastInput.UscFastInput.DgvSelectedRowIndex = 0; FormFastInput.UscFastInput.IsFirstEnterDgv = true;//为了能够在首次为0时仍然是0不是...FormFastInput.InputUserControl.Visible = false; FormFastInput.InputUserControl.Width = 1; //缩小成1不是隐藏

    1.3K10

    DataGridView控件用法一:数据绑定

    一、非绑定模式 所谓非绑定模式就是DataGridView控件显示数据不是来自于绑定数据源,而是可以通过代码手动将数据填充到DataGridView控件,这样就为DataGridView控件增加了很大灵活性...,通常用来做未绑定列 DataGridViewComboBoxColumn 用户在单元格显示下拉列表,不会在绑定时自动生成,通常需要手动进行数据绑定 DataGridViewLinkColumn 用于在单元格显示超链接...DataGridView控件支持标准Windows窗体数据绑定模型,因此该控件将绑定到下表所述实例: 1、任何实现IList接口类,包括一维数组。...2、任何实现IListSource接口类,例如DataTable和DataSet。 3、任何实现IBindingList接口类,例如BindingList(Of T)类。...4、任何实现IBindingListView接口类,例如BindingSource类。

    3.9K20

    【C#】让DataGridView输入实时更新数据源计算列

    本文适用Winform开发,且DataGridView数据源为DataTable/DataView情况。...DataGridView(下称dgv),A、B两列都要在dgv显示,其中A列可编辑(ReadOnly=false)。...,dgv.EndEdit()也能做到提交,但那样会使单元格结束编辑状态 //dgv.CommitEdit()则会保持编辑状态 //参数是提供给DataError等事件原因...二、解决键入后自动全选问题 我是从控件消息这块打的主意,dgv单元格实际上承载了某种编辑控件(TextBox,CheckBox),所以甭管它是什么原因全选,最后总该是收到了什么消息它才全选,那么我就用...由于我只是想屏蔽现有控件某个消息,并不是要从头编写功能控件,所以直接继承DataGridViewCell承载文本框控件DataGridViewTextBoxEditingControl即可,因为该控件已经实现上述接口

    5.2K20

    用FlexGrid做开发,轻松处理百万级表格数据

    核心优势: 快速:加载和滚动速度比竞争对手快10倍以上 灵活:可以获得丰富功能集,不膨胀核心控件 灵活数据绑定 支持多种格式导入导出 灵活数据展示 详尽演示代码 体积小:程序集从113KB...(ASP.NET MVC)到1,314 KB(WinForms) 跨平台:FlexGrid能在超过10个平台上使用,提供相同基本功能 以 ComponentOne FlexGrid for WinForms...二、强大交互体验 -- 行、列、单元格自如定制 FlexGrid 将诸多定制能力内嵌在产品,让您应用系统自如交互。...三、挖掘数据隐藏下趋势 -- 过滤、排序、分组、汇总直到打印和导出 大数据时代问题已经不是数据信息不足,而是如何从数据挖掘出未来趋势和机会。...用户不仅可以简单过滤出想要的人名或者地区,还可以引入复杂业务逻辑获取销售额超过300万分店列表,并配合排序、分组和汇总等功能更清晰呈现出各种KPI数据。

    2.4K80

    只用最适合!全面对比主流 .NET 报表控件

    对于所有内部报表格式,并不是在各个平台通用内部MDZ、MDX、MRX 格式,只能在 WinForms、WPF、ASP.NET、MVC 使用。...但是表格控件并不是严格意义表格,没有表头表尾详细数据概念,是用单元格拼起来,所以无法控制每一行显示。...创建复杂报是ActiveReports 特长,使用已提供表格和矩表,即可灵活实现单元格合并,多为复杂表头报表。...Stimulsoft Report ActiveReports ActiveReports 在创建图表时,只需要为报表提供可用数据字段即可,因此在数据绑定相对方便。...快速创建复杂报表 应用于中国市场,需要根据国内特征确适应市场需求,中国式复杂报表就是考验报表工具,是否满足市场一大标准,无论是复杂运算会计报表,还是复杂表头汇总统计报表,还是自由度极高单元格合并报表

    4.6K00

    Winform DataGridViewTextBoxCell 编辑添加右键菜单,编辑选中文本

    如上是我们使用DataGridView时,编辑单元格右键会出现系统菜单。现在我们添加自己右键菜单,并可以操作选中文字。...DataGridViewTextBoxEditingControl: DataGridViewTextBoxEditingControl 是实现 接口专用类型 TextBox 控件 IDataGridViewEditingControl...,允许在单元格处于编辑模式时将其托管在 DataGridViewTextBoxCell 。...处理 事件以 EditingControlShowing 在单元格进入编辑模式时执行编辑控件自定义初始化。...若要自定义控件显示特征,请设置 属性返回 DataGridViewEditingControlShowingEventArgs.CellStyle 对象属性,不是设置 属性返回控件属性 DataGridViewEditingControlShowingEventArgs.Control

    1.2K70

    MultiRow中文版技术白皮书

    为了实现自由布局数据展示方式,MultiRow在架构设计时打破了常用表格控件行列概念,可以任意操作单元格位置和大小,可以让上下两个单元格自由叠加,也可以设计个性化列头和列脚,提供自动对齐工具以保证版面布局美观...在自由布局基础上,MultiRow增加了模板(Template)概念。...如果用户有其他第三方厂商开发.NET控件,并且希望把它作为MultiRow一个单元格使用,只有实现相关接口就可以做到第三方控件嵌入。...重视易用性 为了降低用户学习成本,MultiRow采用了和DataGridView相似的接口设计,对于曾经使用过Microsoft DataGridView或者熟悉DataGridView接口设计开发人员...试用版下载:http://gcdn.grapecity.com/showtopic-786.html 说明:试用期限不是30天,而是20个使用日。这样更有利于您安排试用时间。

    1.3K50

    【愚公系列】2023年12月 GDI+绘图专题 Pen

    线条连接方式,直角、倒角、斜角等;Dispose():释放Pen对象所占用资源。...); // 在Graphics对象上绘制直线pen.Dispose(); // 释放资源一、Pen1.属性在WinForms,Pen是一个用于绘制直线和形状边界关键对象。...通常,你会使用GraphicsPath来创建具有复杂形状路径,然后使用Pen来绘制这些路径。2.构造函数在WinForms,Pen类有几个不同构造函数,用于创建不同类型画笔对象。...3.方法在WinForms,Pen类提供了一些方法来进行线条绘制变换,其中一个方法是ScaleTransform。这个方法用于在绘制时对Pen对象进行缩放变换。...示例:假设你有一个Pen对象 myPen,并且你想要将线条在水平方向上缩放为原来2倍,垂直方向上缩放为原来0.5倍,你可以使用ScaleTransform方法来实现这个效果:Pen myPen =

    15811

    【愚公系列】2023年11月 Winform控件专题 Label控件详解

    在需要显示ContextMenuStrip控件(Button、DataGridView等)MouseDown事件编写代码,通过Show方法显示ContextMenuStrip。...例如,在窗体更改光标:// 更改窗体光标this.Cursor = Cursors.Hand;1.10 Dock在Winform,Dock属性用于设置控件相对于其容器停靠方式。...另外,如果一个容器中有多个控件,它们Dock属性设置不同,那么这些控件在容器位置就会根据Dock属性设定发生变化。...需要注意是,当多个控件Dock属性设置相同时,它们位置顺序将根据它们在容器添加顺序决定。如果需要改变它们顺序,可以通过在容器删除再重新添加控件方式来实现。...以下是一个具体案例,用于说明如何在Winform中使用Label控件:在Visual Studio创建一个新Winform项目。在Form添加一个Label控件。

    82811

    创新工具:2024年开发者必备一款表格控件(二)

    但实际上场景,需要根据其他单元格值对单元格进行排序,且进一步需求使用多个单元格值对数据进行排序能力。...为了满足这种需求,GcExcel 扩展了语法,使其能够同时包含多个排序条件,不是使用不同排序条件多次进行模板填充。...在未旋转矩形边界内绘制旋转文本 在未旋转矩形边界内绘制旋转文本具有诸多优势,更好地利用空间、布局一致性、在响应式设计中提高效率不对设计造成重大干扰等。...在倾斜矩形内绘制文本 文本也可以在倾斜矩形内旋转,类似于 MS Excel 在带有边框单元格绘制旋转文本。...,了解如何在未旋转矩形边界内绘制旋转文本,或在倾斜矩形绘制文本,并使用 DrawRotatedText 和 SlantedTextAlignment 枚举各种选项。

    12810
    领券