首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检索已更改的DevExpress GridLookupEdit大小?

如何检索已更改的DevExpress GridLookupEdit大小?
EN

Stack Overflow用户
提问于 2014-06-10 20:04:57
回答 1查看 1.6K关注 0票数 0

我有一个DevExpress GridLookupEdit。

我可以通过以下方式将弹出窗口的默认大小更改为任何我想要的大小:

代码语言:javascript
复制
theGrid.Properties.PopupFormSize = New Size(mywidth, myHeight)

但是,我想为每个用户保存高度/宽度。

所以我运行winform的程序,点击它,调整窗口的大小,然后关闭弹出控件。

然后CloseUp事件触发。我检查theGrid.Properties.PopupFormSize,其高度和宽度与我的默认值相同。

如何获得调整大小的值?

我使用的是DevExpress 13.2

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-11 08:01:29

GridLookupEdit使用PopupGridLookUpEditForm对象显示弹出内容,并将其存储在PopupForm属性中。但是,此窗体的大小不等于可以通过GridLookupEdit.Properties.PopupFormSize属性设置的大小。此窗体具有EmbeddedControl属性,当您更改GridLookupEdit.Properties.PopupFormSize属性时,实际上更改了此嵌入式控件的大小。因此,如果要为每个用户保存大小,则需要保存此控件的大小。

不幸的是,GridLookupEdit.PopupForm属性和PopupGridLookUpEditForm.EmbeddedControl属性受到保护。PopupGridLookUpEditForm.EmbeddedControl实际上是GridControl对象。对于DevExpress 14.1,可以通过GridLookupEdit.Properties.View.GridControl属性获取该对象。

因此,在DevExpress 14.1中,GridLookupEdit.Properties.View.GridControl.Size属性是您要寻找的。

但是,如果无法在版本中获得GridControl对象,则可以使用反射或创建后代。

这里是反射的例子:

代码语言:javascript
复制
var popupFormProperty = theGrid.GetType().GetProperty("PopupForm", BindingFlags.NonPublic | BindingFlags.Instance, null, typeof(PopupGridLookUpEditForm), new Type[0], null);
var form = popupFormProperty.GetValue(theGrid);

var embeddedControlProperty = form.GetType().GetProperty("EmbeddedControl", BindingFlags.NonPublic | BindingFlags.Instance);
var embeddedControl = (Control)embeddedControlProperty.GetValue(form);//the size of this control is what you are looking for<

另一种方法是创建自定义GridLookUp编辑器。根据文档,您需要创建自定义编辑器类和自定义存储库项类,例如:

代码语言:javascript
复制
[UserRepositoryItem("RegisterCustomGridLookUpEdit")]
public class RepositoryItemCustomGridLookUpEdit : RepositoryItemGridLookUpEdit
{
    static RepositoryItemCustomGridLookUpEdit() { RegisterCustomGridLookUpEdit(); }

    static public void RegisterCustomGridLookUpEdit()
    {
        EditorRegistrationInfo.Default.Editors.Add(
            new EditorClassInfo(CustomGridLookUpEditName,
            typeof(CustomGridLookUpEdit), typeof(RepositoryItemCustomGridLookUpEdit),
            typeof(GridLookUpEditBaseViewInfo), new ButtonEditPainter(), true, null));
    }

    public const string CustomGridLookUpEditName = "CustomGridLookUpEdit";

    public override string EditorTypeName { get { return CustomGridLookUpEditName; } }
}

public class CustomGridLookUpEdit : GridLookUpEdit
{
    static CustomGridLookUpEdit() { RepositoryItemCustomGridLookUpEdit.RegisterCustomGridLookUpEdit(); }

    public override string EditorTypeName { get { return RepositoryItemCustomGridLookUpEdit.CustomGridLookUpEditName; } }

    [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
    public new RepositoryItemCustomGridLookUpEdit Properties
    {
        get { return base.Properties as RepositoryItemCustomGridLookUpEdit; }
    }

    protected override PopupBaseForm CreatePopupForm() { return new CustomPopupGridLookUpEditForm(this); }

    protected new CustomPopupGridLookUpEditForm PopupForm { get { return (CustomPopupGridLookUpEditForm)base.PopupForm; } }

    public Size PopupFormSize { get { return PopupForm.PopupFormSize; } }
}

public class CustomPopupGridLookUpEditForm : PopupGridLookUpEditForm
{
    public CustomPopupGridLookUpEditForm(CustomGridLookUpEdit ownerEdit) : base(ownerEdit) { }

    public Size PopupFormSize { get { return EmbeddedControl.Size; } }
}

如果将此CustomGridLookUpEdit添加到项目中,则可以使用其PopupFormSize属性获得所需的大小。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24149932

复制
相关文章

相似问题

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