|
分類:[.NET 全般]
こんばんわ。howlingです。
いつもお世話になっております。
さて、今回はPropertyGrid上での話になります。
何かしらの項目を選択した際にListBoxを表示するように
//using System.ComponentModel;
[EditorAttribute(typeof(StringEditor), typeof(System.Drawing.Design.UITypeEditor))]
public EnumString HogeStr
{
get { return hogeStr;}
set { hogeStr = value; }
}
のように設定を行っております。
StringEditorクラスでは、
//using System.Windows.Forms;
//using System.Windows.Forms.Design;
public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext context)
{
return UITypeEditorEditStyle.DropDown;
}
public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)
{
if (provider != null)
{
IWindowsFormsEditorService clsEditorService = ((IWindowsFormsEditorService)provider.GetService(typeof(IWindowsFormsEditorService)));
ListBox list = new ListBox();
list.Items.Add("ほげ");
list.Items.Add("ふにゃ");
list.SelectedValueChanged += new EventHandler(list_SelectedValueChanged); //ListBoxを閉じるだけのイベントを追加
clsEditorService.DropDownControl(list);
if (list.SelectedItem != null)
{
value = list.SelectedItem.ToString();
}
}
return value;
}
のようにコーディングしております。
ですが、これですと項目を選択後、
プルダウンメニューは項目の右側に出てくる下矢印のボタンを押さないと表示されません。
(ただ選択するだけだと、テキストを変更するようにフォーカスが合った状態になってしまいます。)
これを、できれば項目を選択時に即表示したいと思っておりますが、
何かを変更すれば表示できるようになるのでしょうか?
調べ方が悪いのかどうにも見当たりませんでしたので、
教えて頂けますと幸いです。
宜しくお願い致します。
|