UITypeEditorで実装したドロップダウン以外での編集を無効化したい
初質問です。
PropertyGridで、UITypeEditorを利用して、ドロップダウンメニューを実装しました。
ですが、PropertyGridの入力欄でも編集ができてしまいます。
ReadOnly属性を付けたら、ドロップダウンでも編集ができなくなってしまいます。
該当のソースコード
C#
1class UITypeEditorDropDown : UITypeEditor 2 { 3 public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext context) 4 { 5 return UITypeEditorEditStyle.DropDown; 6 } 7 8 public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value) 9 { 10 IWindowsFormsEditorService s = provider.GetService(typeof(IWindowsFormsEditorService)) as IWindowsFormsEditorService; 11 12 if (s != null) 13 { 14 var list = new ListBox(); 15 16 // リストボックスに項目をセット 17 list.Items.Add("項目1"); 18 list.Items.Add("項目2"); 19 list.Items.Add("項目3"); 20 21 // リストの項目に一致するものがあれば選択する 22 if (list.Items.Contains(value.ToString())) 23 { 24 list.SelectedItem = value.ToString(); 25 } 26 27 // クリックで閉じるようにする 28 EventHandler onclick = (sender, e) => 29 { 30 s.CloseDropDown(); 31 }; 32 33 list.Click += onclick; 34 35 // ドロップダウンリストの表示 36 s.DropDownControl(list); 37 38 list.Click -= onclick; 39 40 // 選択されていればその値を返す 41 return (list.SelectedItem != null) ? list.SelectedItem : value; 42 } 43 return value; 44 } 45 }
試したこと
- ReadOnly属性を付与
結果: ドロップダウンでも編集ができなくなってしまいます。
補足情報(FW/ツールのバージョンなど)
VisualStudio2019を使用しています。
プロジェクトの種類はWinFormsです
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/01/15 09:23