0

私は c# (WinForms) のコントロールを作成しており、コレクション型のプロパティが 1 つあります。

ユーザーがこのプロパティを選択すると、「...」が付いたボタンが表示され、新しいモーダル ダイアログが開きます。これはすべて正常に機能します。作成しました:

public class ItemsEditor : UITypeEditor

このクラスでは、EditValue メソッドをオーバーライドし、ShowDialog でモーダル エディターを開きます。私が言うように、これはうまくいきます。

しかし、コントロールのユーザーがダブルクリックしたときにこのダイアログを開きたいです。

この目的のために、ControlDesigner を継承しました。

public class MyControlDesigner : ControlDesigner

このクラスでは、次のメソッドを継承しています。

public override void DoDefaultAction()
{
    string propertyName = "Items";                      
    IServiceProvider provider = (IServiceProvider)GetService(typeof(IServiceProvider));      

    PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(MyControl);

    PropertyDescriptor property = properties[propertyName];

    UITypeEditor editor = (UITypeEditor)property.GetEditor(typeof(UITypeEditor));

    editor.EditValue(provider, null);
}

ご覧のとおり、ランダムなコードをいくつか入れましたが、もちろん機能しません。

これを解決する方法と、ダブルクリックでプロパティを開く方法を教えてください。

助けてくれてありがとう

敬具ボジャン

4

1 に答える 1

0

ダブルクリックでエディターを表示する可能性についてはわかりませんが、他の方法の1つは、アクションリスト(別名SmartTag)を使用することです。記事を参照してください:http://msdn.microsoft.com/en-us/library/ms171829.aspx

于 2011-01-25T04:55:30.703 に答える