C#中ObjectListView中单元格内的自定义格式

问题描述 投票:0回答:1

我将要开始一个新项目,希望可以使用ObjectListView。我一直在通过该论坛进行大量阅读,但有一点我还无法弄清楚ObjectListView(或FastObjectListView)是否可行。

在这个项目中,我希望能够对单元格中的文本进行一些自定义格式设置,其中只有某些单词或字符串内容的某些部分以粗体显示,或者能够更改。

一个示例用例:如果我的单元格包含以下字符串,“你好,我的名字是鲍勃。”我希望进行设置,以便仅将单词“ my”加粗,并将单词“ is”使用不同的颜色(例如,将其更改为红色)。

我一直在查看ObjectListView装饰,并认为这是一条路线,但是我不确定ObjectListView中是否还有其他控件可以自然地进行这种格式设置。我可以在FormatCell回调中包含一些东西吗?还是只能将格式应用于单元格的整个字符串内容?

任何帮助将不胜感激!

c# objectlistview
1个回答
0
投票

也许您可以使用自定义渲染器来实现所需的功能。您可以找到一个good example over here

public class GradientRenderer : BaseRenderer
{
    public override void Render(Graphics g, Rectangle r) {
        using (LinearGradientBrush gradient = new LinearGradientBrush(r, Color.Gold, Color.Fuchsia, 0.0)) {
            g.FillRectangle(gradient, r);
        }
        StringFormat fmt = new StringFormat(StringFormatFlags.NoWrap);
        fmt.LineAlignment = StringAlignment.Center;
        fmt.Trimming = StringTrimming.EllipsisCharacter;
        switch (this.Column.TextAlign) {
            case HorizontalAlignment.Center: fmt.Alignment = StringAlignment.Center; break;
            case HorizontalAlignment.Left: fmt.Alignment = StringAlignment.Near; break;
            case HorizontalAlignment.Right: fmt.Alignment = StringAlignment.Far; break;
        }
        g.DrawString(this.GetText(), this.Font, this.TextBrush, r, fmt);
    }
}

您可以使用]将渲染器分配给单元格>

myOlvColumn.Renderer = new GradientRenderer();

您可以尝试将RichTextBox渲染/绘制/叠加到单元格中。这将使显示单独格式化的文本更加容易。不知道是否可能。

© www.soinside.com 2019 - 2024. All rights reserved.