更改 devexpress layoutcontrolitem 编辑器类型?
Changing the devexpress layoutcontrolitem editor type?
如何更改 devexpress layoutcontrolitem 编辑器类型?
例如 - 将 searchlookupedit 更改为 textedit,然后再改回来。
我可以将 searchlookupedit 更改为 textedit,但反之则不行。
这是我的代码:
public partial class Form1 : DevExpress.XtraEditors.XtraForm
{
public Form1()
{
InitializeComponent();
}
private void checkEdit1_CheckedChanged(object sender, EventArgs e)
{
if (checkEdit1.Checked)
{
ConvertEditorType("TextEdit", searchLookUpEdit1, layoutControlItem1);
//this.Text = searchLookUpEdit1.GetType().ToString();
}
else
{
ConvertEditorType("SearchLookUpEdit", searchLookUpEdit1, layoutControlItem1);
//this.Text = searchLookUpEdit1.GetType().ToString();
}
}
private void ConvertEditorType(string editorTypeName, BaseEdit sourceEditor, LayoutControlItem layout)
{
layout.Owner.BeginUpdate();
EditorClassInfo info = EditorRegistrationInfo.Default.Editors[editorTypeName];
if (info == null) return;
BaseEdit edit = info.CreateEditor();
//this.Text = edit.GetType().ToString();
edit.Location = sourceEditor.Location;
edit.Size = sourceEditor.Size;
edit.Parent = sourceEditor.Parent;
edit.Properties.Assign(sourceEditor.Properties);
layout.Control = edit;
layout.Owner.EndUpdate();
sourceEditor.Dispose();
sourceEditor = null;
}
请帮忙,谢谢。
这是我几年前使用的 DevExpress 的解决方案。我觉得值得一看
基本上他们有一个自定义的 EditorConverter class 可以满足您的需要。它重新分配了很多属性和数据绑定。也许您不需要 class 中的所有内容,但当我将它与您的代码示例一起使用时,它似乎按预期工作。
如何更改 devexpress layoutcontrolitem 编辑器类型?
例如 - 将 searchlookupedit 更改为 textedit,然后再改回来。
我可以将 searchlookupedit 更改为 textedit,但反之则不行。
这是我的代码:
public partial class Form1 : DevExpress.XtraEditors.XtraForm
{
public Form1()
{
InitializeComponent();
}
private void checkEdit1_CheckedChanged(object sender, EventArgs e)
{
if (checkEdit1.Checked)
{
ConvertEditorType("TextEdit", searchLookUpEdit1, layoutControlItem1);
//this.Text = searchLookUpEdit1.GetType().ToString();
}
else
{
ConvertEditorType("SearchLookUpEdit", searchLookUpEdit1, layoutControlItem1);
//this.Text = searchLookUpEdit1.GetType().ToString();
}
}
private void ConvertEditorType(string editorTypeName, BaseEdit sourceEditor, LayoutControlItem layout)
{
layout.Owner.BeginUpdate();
EditorClassInfo info = EditorRegistrationInfo.Default.Editors[editorTypeName];
if (info == null) return;
BaseEdit edit = info.CreateEditor();
//this.Text = edit.GetType().ToString();
edit.Location = sourceEditor.Location;
edit.Size = sourceEditor.Size;
edit.Parent = sourceEditor.Parent;
edit.Properties.Assign(sourceEditor.Properties);
layout.Control = edit;
layout.Owner.EndUpdate();
sourceEditor.Dispose();
sourceEditor = null;
}
请帮忙,谢谢。
这是我几年前使用的 DevExpress 的解决方案。我觉得值得一看
基本上他们有一个自定义的 EditorConverter class 可以满足您的需要。它重新分配了很多属性和数据绑定。也许您不需要 class 中的所有内容,但当我将它与您的代码示例一起使用时,它似乎按预期工作。