2


1

PropertyGridを取得してSaveFileDialogを表示するにはどうすればよいですか?

ユーザーがデータを新しいファイルにエクスポートしているときにSaveFileDialogを表示できるようにするプロパティグリッドコントロールがあります。 FileNameEditorでOpenFileDialogを簡単に接続できますが、ファイルを保存するための同等のクラスはないようです。

SaveFileDialogが表示されるようにSystem.ComponentModel.Editor属性で指定できる既存のクラスはありますか?

3 Answer


6


これはうまくいきます:

public class SaveFileNameEditor: UITypeEditor
{
    public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext context)
    {
        return UITypeEditorEditStyle.Modal;
    }

    public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)
    {
        if (context == null || context.Instance == null || provider == null)
        {
            return base.EditValue(context, provider, value);
        }

        using (SaveFileDialog saveFileDialog = new SaveFileDialog())
        {
            if (value != null)
            {
                saveFileDialog.FileName = value.ToString();
            }

            saveFileDialog.Title = context.PropertyDescriptor.DisplayName;
            saveFileDialog.Filter = "All files (*.*)|*.*";
            if (saveFileDialog.ShowDialog() == DialogResult.OK)
            {
                value = saveFileDialog.FileName;
            }
        }

        return value;
    }
}


4


したがって、 `propertyGrid1.SelectedObject`で設定するオブジェクトには、次のようなパブリックプロパティが必要です。

            private string _saveFile;
    [BrowsableAttribute(true)]
    [EditorAttribute(typeof(SaveFileNameEditor), typeof(System.Drawing.Design.UITypeEditor))]
    public string SaveFileEditorVlad
    {
        get { return _saveFile; }
        set { _saveFile = value; }
    }

Stewy's answer work :)その後、実行時にこのプロパティを編集すると、省略記号が表示され、選択することができます名前を付けて保存するファイル。


0


ないと思います。 UITypeEditorから派生した独自のエディターを作成する必要があります。 それほど難しいことではありません。