【问题标题】:How to display a RepositoryItemHyperLinkEdit control inside a DevExpress GridControl如何在 DevExpress GridControl 中显示 RepositoryItemHyperLinkEdit 控件
【发布时间】:2013-01-05 13:18:45
【问题描述】:

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

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

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

【问题讨论】:

    标签: c# winforms devexpress xtragrid


    【解决方案1】:

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

    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!");
    }
    

    【讨论】:

    • 嗨,这段代码对我不起作用,因为我使用的是 devexpress 数据网格控件。>>gridview1.columns["Hyperlink"];行不工作,除非按钮的代码工作正常。请指导我如何处理超链接。
    • @RanjanPanigrahi GridView 是用于 DevExpress XtraGrid 控件的 View。您可以使用((GridView)gridControl1.View).Columns 代替gridView1.Columns
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      请注意,您可能必须使用 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);
              }
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-11-03
        • 1970-01-01
        • 1970-01-01
        • 2015-10-07
        • 1970-01-01
        • 1970-01-01
        • 2017-12-21
        • 1970-01-01
        相关资源
        最近更新 更多