URL 单元格中的未定义协议

Undefined protocol in the URL cell

我有一个 UltraGridCell 样式等于 Infragistics.Win.UltraWinGrid.ColumnStyle.URL 并将我自己的处理程序添加到 UltraGrid.MouseClick 这样我就可以在 URL 列是点击了。

如果 URL 列的值为“ABCDE”,则没有错。它看起来像单元格中的 URL link,带有下划线和蓝色(单击后变为紫色)。它就像浏览器中的 URL link。

问题是如果内容是像“ABC:DE”这样的值。结果它抱怨有一个未定义的协议正在调用。就像你在IEURL栏输入“ABC://DE”一样

在调试模式下检查后,看起来这应该由 UltraGrid 内部调用。 因此,我的问题是:我有什么办法可以禁用此默认行为吗?

非常感谢任何帮助。

当您将列样式设置为 Infragistics.Win.UltraWinGrid.ColumnStyle.URL 时,列的编辑器将变为 Infragistics.Win.FormattedLinkLabel.FormattedLinkEditor。该编辑器有 LinkClicked 事件。在事件处理程序中,您可以获得事件参数的 OpenLink 属性 并将其设置为 false。这将抑制 link 打开。为此,首先在 InitializeLayout 事件中获取编辑器:

private void UltraGrid1_InitializeLayout(object sender, InitializeLayoutEventArgs e)
{
    // get the column you will set up
    var column = e.Layout.Bands[YOUR_BAND_INDEX].Columns[YOUR_COLUMN_INDEX];

    // set the style of the column (you already did this)
    column.Style = Infragistics.Win.UltraWinGrid.ColumnStyle.URL;

    // get the editor after set the column style and handle LinkClicked event
    var editor = column.Editor as FormattedLinkEditor;
    editor.LinkClicked += this.Editor_LinkClicked;
}

然后在LinkClicked事件停止link开场:

private void Editor_LinkClicked(object sender, Infragistics.Win.FormattedLinkLabel.LinkClickedEventArgs e)
{
    e.OpenLink = false;
}