gpt4 book ai didi

c# - DataGridView CellPainting 绘图文本与符号显示奇怪

转载 作者:行者123 更新时间:2023-11-30 14:24:40 25 4
gpt4 key购买 nike

我已经实现了一个使用 TextRenderer.DrawText 的 CellPainting 事件处理程序,它一直运行良好,直到单元格中有一个符号。单元格在编辑单元格时正确显示与符号,但在完成编辑并绘制时,它显示为一条小线(不是下划线)。

Editing cell Not Editing cell

using System;
using System.Drawing;
using System.Windows.Forms;

namespace StackOverFlowFormExample {
public partial class DataGridViewImplementation : DataGridView {
public DataGridViewImplementation() {
InitializeComponent();
this.ColumnCount = 1;
this.CellPainting += DGV_CellPainting;
}

private void DGV_CellPainting(object sender, DataGridViewCellPaintingEventArgs e) {
if (!e.Handled && e.RowIndex > -1 && e.Value != null) {
e.PaintBackground(e.CellBounds, false);
TextRenderer.DrawText(e.Graphics, e.Value.ToString(),
e.CellStyle.Font, e.CellBounds,
e.CellStyle.ForeColor, TextFormatFlags.VerticalCenter);
e.Handled = true;
}
}
}
}

//creating the datagridview
public partial class MainForm : Form {
public MainForm() {
InitializeComponent();
DataGridViewImplementation dgvi = new DataGridViewImplementation();
this.Controls.Add(dgvi);
dgvi.Rows.Add("this is a & value");
}
}

替换

TextRenderer.DrawText(e.Graphics, e.Value.ToString(), 
e.CellStyle.Font, e.CellBounds,
e.CellStyle.ForeColor, TextFormatFlags.VerticalCenter);

e.PaintContent(e.ClipBounds);

显示正确,当然我希望能够自定义内容的绘画。我也试过使用

e.Graphics.DrawString(e.Value.ToString(), e.CellStyle.Font, Brushes.Black, e.CellBounds);

e.PaintContent Image

但它画的不一样

e.Paint(e.ClipBounds, e.PaintParts);

当正在绘制不需要我自定义绘制的单元格时,我在我的实际代码中使用 e.Paint。

如何使 e.Graphics.DrawString 看起来与 e.Paint 相同或使 TextRenderer.DrawText 正确显示符号?

最佳答案

你想使用 TextRenderer 版本,因为 DrawString 实际上应该只用于打印:

TextRenderer.DrawText(e.Graphics, e.Value.ToString(), 
e.CellStyle.Font, e.CellBounds, e.CellStyle.ForeColor,
TextFormatFlags.NoPrefix | TextFormatFlags.VerticalCenter);

NoPrefix 标志将正确显示 & 符号。

关于c# - DataGridView CellPainting 绘图文本与符号显示奇怪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40753405/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com