DevExpress XtraGrid - 每行中的ImageButton

时间:2012-04-25 13:07:26

标签: c# devexpress xtragrid

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

有没有简单的解决方案?

编辑:

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

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);

ANSWER(使用Glyph)

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); 

2 个答案:

答案 0 :(得分:1)

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

确保将RepositoryItemButtonEdit的TextEdit属性设置为隐藏,并配置buttons属性以使其具有图像按钮。

然后处理存储库项目的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 :(得分:1)

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

  1. 如果要为RepositoryItemButtonEdit按钮使用Image,请不要忘记将Button的Kind属性设置为Glyph。
  2. 如果您还要显示编辑器按钮的标题,则必须将ImagePosition设置为其他的MiddleCenter。
  3. 我宁愿使用ButtonClick事件,并检查编辑器按钮的Index属性。
  4. This链接描述了有关此方案的有趣情况。
  5. 希望它也会有所帮助。

    此致 佐尔坦