Come posso ottenere un PropertyGrid per mostrare un SaveFileDialog?

Ho un controllo di griglia di proprietà in cui voglio essere in grado di visualizzare un SaveFileDialog mentre l’utente è nel processo di esportazione dei dati in un nuovo file. Posso facilmente colbind OpenFileDialog con FileNameEditor ma non sembra essere una class equivalente per il salvataggio dei file.

Esiste una class esistente che posso specificare nell’attributo System.ComponentModel.Editor in modo che venga visualizzato un parametro SaveFileDialog?

Pertanto l’object impostato nella propertyGrid1.SelectedObject richiede una proprietà pubblica come la seguente:

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

per far funzionare la risposta di Stewy 🙂 Quindi in fase di esecuzione, quando modifichi questa proprietà, i puntini di sospensione mostreranno e sarai in grado di selezionare un file su Salva come.

Questo funziona bene:

 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; } } 

Non penso che ci sia. Dovrai scrivere il tuo editor derivato da UITypeEditor. Non dovrebbe essere così difficile.