我有一个DevExpress GridLookupEdit。
我可以通过以下方式将弹出窗口的默认大小更改为任何我想要的大小:
theGrid.Properties.PopupFormSize = New Size(mywidth, myHeight)但是,我想为每个用户保存高度/宽度。
所以我运行winform的程序,点击它,调整窗口的大小,然后关闭弹出控件。
然后CloseUp事件触发。我检查theGrid.Properties.PopupFormSize,其高度和宽度与我的默认值相同。
如何获得调整大小的值?
我使用的是DevExpress 13.2
发布于 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对象,则可以使用反射或创建后代。
这里是反射的例子:
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编辑器。根据文档,您需要创建自定义编辑器类和自定义存储库项类,例如:
[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属性获得所需的大小。
https://stackoverflow.com/questions/24149932
复制相似问题