DevExpress XtraGrid - 每行中的图像按钮

本文关键字:图像 按钮 XtraGrid DevExpress | 更新日期: 2023-09-27 18:32:16

我想为每一行添加一个自定义方法,即一个打开的详细信息表单,显示单击按钮的网格行的详细信息。

有什么简单的解决方案吗?

编辑:

我的代码设置按钮样式有什么问题?

Image img = imageList1.Images[5];
            repositoryItemButtonEdit1.Buttons.Clear();
            repositoryItemButtonEdit1.Buttons.Add(new EditorButton(ButtonPredefines.Left, "View Filter", 16, true, true, true, ImageLocation.Default, img));
            repositoryItemButtonEdit1.ButtonPressed += new ButtonPressedEventHandler(repositoryItemButtonEdit1_ButtonPressed);

答案(使用字形)

Image img = imageList1.Images[5];
repositoryItemButtonEdit1.Buttons.Clear();
repositoryItemButtonEdit1.Buttons.Add(
    new EditorButton(
        ButtonPredefines.Glyph, 
        "", 
        16, 
        true, 
        true, 
        true, 
        ImageLocation.Default, 
        img
    )
 );
 repositoryItemButtonEdit1.ButtonPressed += newButtonPressedEventHandler(repositoryItemButtonEdit1_ButtonPressed); 

DevExpress XtraGrid - 每行中的图像按钮

最简单的方法是添加一个RepositoryItemButtonEdit作为列的ColumnEdit

请确保将 RepositoryItemButtonEdit 的 TextEdit 属性设置为隐藏,并配置 button 属性,以便它具有图像按钮。

然后处理存储库项的ButtonPressed Event

一个简单的事件处理程序可能如下所示:

C#

private void RepositoryItemButtonEdit1_Click(object sender, System.EventArgs e)
{
    WhateverClass MyData = (WhateverClass)GridView1.GetFocusedRow();
    Form1 frmEdit = new Form1(MyData);
    frmEdit.Show();
}

vb.net

Private Sub RepositoryItemButtonEdit1_Click(sender As Object, e As System.EventArgs) Handles RepositoryItemButtonEdit1.Click
    Dim MyData As WhateverClass= CType(GridView1.GetFocusedRow(), WhateverClass)
    Dim frmEdit As New Form1(MyData)
    frmEdit.Show()
End Sub

只是对上述答案的一些补充,因为我之前遇到了类似的问题。

  1. 如果要将图像用于 RepositoryItemButtonEdit 按钮,请不要忘记将 Button 的 Kind 属性设置为 Glyph。
  2. 如果还想显示编辑器按钮的标题,则必须将图像位置设置为其他而不是中间中心。
  3. 我宁愿使用 ButtonClick 事件,并检查编辑器按钮的 Index 属性。
  4. 链接描述了有关此方案的有趣情况。

希望它也会有所帮助。

问候佐尔坦