我将要开始一个新项目,希望可以使用ObjectListView。我一直在通过该论坛进行大量阅读,但有一点我还无法弄清楚ObjectListView(或FastObjectListView)是否可行。
在这个项目中,我希望能够对单元格中的文本进行一些自定义格式设置,其中只有某些单词或字符串内容的某些部分以粗体显示,或者能够更改。
一个示例用例:如果我的单元格包含以下字符串,“你好,我的名字是鲍勃。”我希望进行设置,以便仅将单词“ my”加粗,并将单词“ is”使用不同的颜色(例如,将其更改为红色)。
我一直在查看ObjectListView装饰,并认为这是一条路线,但是我不确定ObjectListView中是否还有其他控件可以自然地进行这种格式设置。我可以在FormatCell回调中包含一些东西吗?还是只能将格式应用于单元格的整个字符串内容?
任何帮助将不胜感激!
也许您可以使用自定义渲染器来实现所需的功能。您可以找到一个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渲染/绘制/叠加到单元格中。这将使显示单独格式化的文本更加容易。不知道是否可能。