首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >DevExpress在GridView单元格(TextEdit)上单击“全部”

DevExpress在GridView单元格(TextEdit)上单击“全部”
EN

Stack Overflow用户
提问于 2019-12-18 13:37:07
回答 3查看 1.3K关注 0票数 0

我需要这样做,所以当用户单击网格视图中带有textedit的单元格时,它将选择TextEdit中的所有内容。我尝试了很多在互联网上可以找到的方法,但是没有一种方法工作得很好。

"EditorShowMode = MouseUp“方式破坏了一切,例如,当您单击已签入的单元格时;它选择单元格,然后您需要再次单击o单击才能实际单击CheckEdit。

“使用EditorShowMode = MouseUp并在MouseDown上手动处理其他事情”刚刚恢复。不会对所有类型的控件都很好地工作。

“在ShownEditor事件上更改选择长度等”方式也不起作用,实际上它在单击文本时会选择文本,但它不会覆盖默认函数,因此所选内容会立即更改。也尝试了SelectAll方法,但它有一些问题,我不记得(可能根本不起作用)。

我确实尝试过很多事情,但找不到一个完全好的方法。请告诉我,如果你能得到一个工作方式,而不打破其他类型的控制在网格中。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-02-21 11:30:44

Pavel在DevExpress支持上的回答(工作很棒):

实现这一目标的最简单方法是使用GridView.ShownEditor事件订阅active编辑器的MouseUp事件。然后,选择MouseUp事件处理程序中的所有文本并分离该处理程序,以避免后续的文本选择。

代码语言:javascript
运行
复制
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();
}
票数 2
EN

Stack Overflow用户

发布于 2019-12-19 12:16:02

您可以使用GridView CustomRowCellEdit事件并设置文本编辑器的事件,如“鼠标向上”。可以设置RepositoryItemTextEdit MouseUp事件,如本例所示。

示例:

代码语言:javascript
运行
复制
private void gridView1_CustomRowCellEdit(object sender, CustomRowCellEditEventArgs e)
{
    if (e.RepositoryItem is DevExpress.XtraEditors.Repository.RepositoryItemTextEdit)
    {
        DevExpress.XtraEditors.Repository.RepositoryItemTextEdit rep = new DevExpress.XtraEditors.Repository.RepositoryItemTextEdit();
        rep.ReadOnly = false;
        rep.MouseUp += rep_MouseUp;
        e.RepositoryItem = rep;
    }       

}
void rep_MouseUp(object sender, MouseEventArgs e)
{
    DevExpress.XtraEditors.TextEdit te = sender as DevExpress.XtraEditors.TextEdit;
    te.SelectAll();
}
票数 0
EN

Stack Overflow用户

发布于 2019-12-19 13:03:28

您应该处理TextEdit的Enter事件

代码语言:javascript
运行
复制
private void myRepositoryItemTextEdit_Enter(object sender, EventArgs e)  
{  
    var editor = (DevExpress.XtraEditors.TextEdit)sender;  
    BeginInvoke(new MethodInvoker(() =>  
    {  
        editor.SelectionStart = 0;  
        editor.SelectionLength = editor.Text.Length;  
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59393233

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档