如何更改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;
}
请帮助,谢谢。
答案 0 :(得分:0)
这是几年前我用过的DevExpress的解决方案。我认为值得一看。
基本上他们有一个自定义的EditorConverter类,可以满足您的需求。它重新分配了许多属性和数据绑定。也许你不需要课堂上的所有内容,但是当我将它与你的代码示例一起使用时,它似乎按预期工作。