我需要这样做,以便当用户在网格视图中单击带有TextEdit的单元格时,它将在textedit中全选。我尝试了很多可以在互联网上找到的方法,但是都无法正常工作。
“ EditorShowMode = MouseUp”方式会破坏所有内容,例如,当您单击选中它的单元格时;它选择了单元格,然后您需要再次单击以实际单击CheckEdit。
“使用EditorShowMode = MouseUp并手动处理MouseDown上的其他事情”简直是ew。不适用于所有类型的控件。
“在ShownEditor事件上更改选择长度等”的方法也不起作用,实际上它在单击时选择了文本,但没有覆盖默认功能,因此选择会立即更改。还尝试了SelectAll方法,但是它有一些我不记得的问题(可能根本没有起作用)。
我确实尝试了很多事情,但是找不到一个很好的方法。请告诉我是否可以在不破坏网格中其他类型的控件的情况下找到一种可行的方法。
在DevExpress支持上由Pavel回答(效果很好):
实现此目的的最简单方法是使用GridView.ShownEditor事件订阅活动编辑器的MouseUp事件。然后,在MouseUp事件处理程序中选择所有文本,并分离该处理程序以避免随后的文本选择。
private void GridView_ShownEditor(object sender, EventArgs e)
{
GridView view = sender as GridView;
if (view.ActiveEditor is TextEdit)
view.ActiveEditor.MouseUp += ActiveEditor_MouseUp;
}
private void ActiveEditor_MouseUp(object sender, MouseEventArgs e)
{
BaseEdit edit = sender as BaseEdit;
edit.MouseUp -= ActiveEditor_MouseUp;
edit.SelectAll();
}