3

我当前的 WinForms 应用程序中有一个 DevExpress GridControl。我需要在一列中显示一个超链接控件(RepositoryItemHyperLinkEdit)。我已经通过设计器添加了 RepositoryItemHyperLinkEdit,但是当我运行应用程序时,没有显示超链接。
喜欢显示我们正在使用的按钮:

repositoryItemButtonEdit1.Buttons[0].Kind = DevExpress.XtraEditors.Controls.ButtonPredefines.Glyph;
repositoryItemButtonEdit1.Buttons[0].Caption = "Get Sql Query";

所以请告诉我我将写什么来在列中显示超链接。

4

3 回答 3

3

您可以使用以下代码在网格列中显示超链接:

GridColumn hyperLinkColumn = gridView1.Columns["Hyperlink"];
//...
RepositoryItemHyperLinkEdit hyperLinkEdit = new RepositoryItemHyperLinkEdit();
hyperLinkColumn.ColumnEdit = hyperLinkEdit; // this line associated hyperlink with column
hyperLinkEdit.OpenLink += hyperLinkEdit_OpenLink;
//...
void hyperLinkEdit_OpenLink(object sender, OpenLinkEventArgs e) {
    MessageBox.Show("HyperLinkEdit clicked!");
}

如果要在同一列中显示附加按钮,可以使用以下方法:

hyperLinkEdit.Buttons[0].Kind = ButtonPredefines.Glyph;
hyperLinkEdit.Buttons[0].Caption = "Get SQL Query";
hyperLinkEdit.ButtonClick += hyperLinkEdit_ButtonClick;
hyperLinkColumn.ShowButtonMode = ShowButtonModeEnum.ShowAlways; // always display button in this column
//...
void hyperLinkEdit_ButtonClick(object sender, ButtonPressedEventArgs e) {
    MessageBox.Show("HyperLinkEdit's button clicked!");
}
于 2013-01-22T14:28:53.170 回答
1

您没有提到您已将列的 ColumnEdit 属性设置为存储库项。如果您还没有:

存储库项

于 2013-01-22T14:37:40.733 回答
0

请注意,您可能必须使用 gridView_MouseUp 事件来捕获单击事件,而无需等待网格将焦点赋予单元格。

gridColumn.ColumnEdit = new RepositoryItemHyperLinkEdit();
gridColumn.OptionsColumn.ReadOnly = true;
gridColumn.OptionsColumn.AllowEdit = false;

gridView.MouseUp += gridView_MouseUp;

private void gridViewDesk_MouseUp(object sender, MouseEventArgs e)
{
    GridView gridView = (GridView) sender;
    if (e.Button == MouseButtons.Left && e.Clicks == 1)
    {
        GridHitInfo hitInfo = gridView.CalcHitInfo(e.Location);
        if (hitInfo.InRowCell && hitInfo.Column == this.gridColumn)
        {
            MessageBox.Show("Click " + hitInfo.RowHandle);
        }
    }
}
于 2013-08-07T07:48:23.083 回答