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クラスを持っています。多くのプロパティとデータバインディングを再割り当てします。クラスですべてを行う必要はないかもしれませんが、コード例で使用すると、期待どおりに機能するようです。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加