我正在使用 Infragistics 2013 版本。我有一个要求,我必须在 winforms ultragrid 的列中添加一个按钮和一个文本。该按钮将打开一个弹出屏幕,允许用户选择一个值,该值将在网格列中显示为文本。
谢谢你。
我正在使用 Infragistics 2013 版本。我有一个要求,我必须在 winforms ultragrid 的列中添加一个按钮和一个文本。该按钮将打开一个弹出屏幕,允许用户选择一个值,该值将在网格列中显示为文本。
谢谢你。
将列的样式设置为ColumnStyle .EditButton。例如:
UltraGrid1.DisplayLayout.Bands(0).Columns("ColName").Style = Infragistics.Win.UltraWinGrid.ColumnStyle.EditButton
然后,您可以处理 UltraGrids CellButtonClicked事件以了解单击按钮的时间,其中 e.Cell 将让您知道单击了哪个单元格:
Private Sub UltraGrid1_ClickCellButton(ByVal sender As Object, ByVal e As Infragistics.Win.UltraWinGrid.CellEventArgs) Handles ultraGrid1.ClickCellButton
Debug.WriteLine("Button in " & e.Cell.Value.ToString() & " cell was clicked.")
End Sub
只是稍微扩展答案:如果您希望按钮始终可见(而不是仅在单击包含按钮的单元格时),您可能还需要设置 ButtonDisplayStyle:
UltraGrid1.DisplayLayout.Bands(0).Columns("ColName").ButtonDisplayStyle = UltraWinGrid.ButtonDisplayStyle.Always
此外,如果您想更好地控制按钮的外观或位置,那么来自 Infragistics 的 Mike Saltzman 的以下信息可能会很有用:
如果您想要左对齐的按钮、同一单元格中的多个按钮,或者不填充整个单元格但包含文本和/或图像的按钮,您可以使用编辑器。基本方法是这样的:
1) 在表单中添加一个编辑器控件(例如 UltraTextEditor)。
2) 使用 ButtonsLeft 和/或 ButtonsRight 集合添加您想要的按钮。您可以设置每个按钮的文本和外观。
3)在代码中,将Column(或Cell)的EditorControl设置为编辑器控件。这本质上类似于设置样式,但以更健壮的方式。
4) 要处理按钮的单击事件,您需要处理编辑器上的事件——而不是网格。例如,如果它只是一个普通按钮,您将使用 EditorButtonClick。事件 args 将传递给您一个 Context ,它将返回单击按钮的网格单元格。
好的得到了答案。
必须将列样式设置为 EditButton。
UltraGrid1.DisplayLayout.Bands(0).Columns("ColName").Style = Infragistics.Win.UltraWinGrid.ColumnStyle.EditButton
这很简单。
private void ultraGrid1_InitializeRow(object sender, InitializeRowEventArgs e)
{
// We only need to do this the first time the row is initialized.
if (e.ReInitialize == false)
{
e.Row.Cells["Button"].Value = "Click Here";
}
}
}