更改devexpress layoutcontrolitem编辑器类型?

时间:2018-05-17 03:06:29

标签: c# devexpress

如何更改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;
    }

请帮助,谢谢。

1 个答案:

答案 0 :(得分:0)

这是几年前我用过的DevExpress的解决方案。我认为值得一看。

https://www.devexpress.com/Support/Center/Question/Details/Q353927/converting-one-control-to-another-at-run-time

基本上他们有一个自定义的EditorConverter类,可以满足您的需求。它重新分配了许多属性和数据绑定。也许你不需要课堂上的所有内容,但是当我将它与你的代码示例一起使用时,它似乎按预期工作。