0

如何在 Ultra Win Grid 单元格中显示富文本格式文本(基础架构)。我将此数据作为 varbinary(MAX) 存储在数据库中。

4

1 回答 1

1

使用 Infragistics,您有很多选择如何实现此功能。让我告诉你最简单的方法:

  1. 设置Grid.DataSource属性后设置列属性:
UltraGridColumn c = null;
/// initialize c here. Lets suppose that it has a "rtf" key.
c.Style = ColumnStyle.FormattedTextEditor;
((FormattedLinkEditor) c.Editor).UnderlineLinks = UnderlineLink.Always;
((FormattedLinkEditor)c.Editor).LinkClicked += new Infragistics.Win.FormattedLinkLabel.LinkClickedEventHandler(rtfColumnn_LinkClicked);
c.MaskClipMode = MaskMode.Raw;
((FormattedLinkEditor) c.Editor).TreatValueAs = TreatValueAs.FormattedText;
  1. 允许用户以 rtf 文本打开链接:
private void rtfColumnn_LinkClicked(object sender, Infragistics.Win.FormattedLinkLabel.LinkClickedEventArgs e)
{
    e.OpenLink = true;
}
  1. 订阅事件BeforeEnterEditMode
bindingGrid.BeforeEnterEditMode += this.Grid_BeforeEnterEditMode;
  1. 并展示一个不错的基础架构 rtf 编辑器,而不是 incell 编辑:
private void Grid_BeforeEnterEditMode(object sender, System.ComponentModel.CancelEventArgs e)
{
    if (Grid.ActiveCell.Column.Key=="rtf")
        {
            Infragistics.Win.SupportDialogs.FormattedTextEditor.FormattedTextUIEditorForm rtf_frm =
                new FormattedTextUIEditorForm();
            rtf_frm.Value = Grid.ActiveCell.Value;
            DialogResult dresult = rtf_frm.ShowDialog();
            if (dresult == DialogResult.OK)
            {
                Grid.ActiveCell.Value = rtf_frm.Value;
            }

            e.Cancel = true;
            return;
        }
}
于 2011-11-29T13:58:42.610 回答