visual ventanas mostrar mensaje form diálogo dialogos dialogo cuadros cuadro confirmacion como c# winforms

mostrar - ventanas de dialogo en c#



Carpeta de diálogo del navegador como diálogo de abrir archivo (4)

Por favor, vea la instantánea a continuación. Esto se tomó del flujo de trabajo "Creación de un nuevo proyecto" en Visual Studio 2008.

Esta ventana se utiliza para seleccionar una carpeta en la que se almacenará el proyecto. ¿Cómo creo una ventana similar en mi aplicación c #?



Es algo similar en Office, un diálogo que permite seleccionar una carpeta. La única diferencia es que el botón Seleccionar carpeta se llama "OK" en lugar de "Seleccionar carpeta".

Microsoft.Office.Interop.Excel.Application app = new Microsoft.Office.Interop.Excel.Application(); Microsoft.Office.Core.FileDialog fileDialog = app.get_FileDialog(Microsoft.Office.Core.MsoFileDialogType.msoFileDialogFolderPicker); fileDialog.InitialFileName = "c://Temp//"; //something you want int nres = fileDialog.Show(); if (nres == -1) //ok { Microsoft.Office.Core.FileDialogSelectedItems selectedItems = fileDialog.SelectedItems; string[] selectedFolders = selectedItems.Cast<string>().ToArray(); if (selectedFolders.Length > 0) { string selectedFolder = selectedFolders[0]; } }

Por supuesto, debe agregar referencias a Microsoft.Office.Core (Biblioteca de objetos de Microsoft Office 14.0) y Microsoft.Office.Interop.Excel (Biblioteca de objetos de Microsoft Excel 14.0).


Modifiqué el código de C # a VB, y mi env es VS2015 + Office 2010. Mi código es ligeramente diferente al de Daniel, ya que algunas funciones del código de Daniel solo admiten Office 2003/2007.

Al usar una nueva instancia de Excel, será más lento que simplemente abrir un OpenFileDialog o OpenFolderDialog, pero es mucho más fácil de usar. Mi programa solo llama a este código una vez, por lo que cambiar el rendimiento por facilidad de uso no es una preocupación en mi caso.

Imports Microsoft.Office Imports Excel = Microsoft.Office.Interop.Excel Private Sub Button_select_raw_dir_Click(sender As Object, e As EventArgs) Handles Button_select_raw_dir.Click Dim raw_app As Excel.Application = New Excel.Application Dim raw_data_open_folder_dialog As Microsoft.Office.Core.FileDialog raw_data_open_folder_dialog = raw_app.FileDialog(Microsoft.Office.Core.MsoFileDialogType.msoFileDialogFolderPicker) raw_data_open_folder_dialog.AllowMultiSelect = False raw_data_open_folder_dialog.Title = "Please select the raw data''s dir " Dim nres As Integer = raw_data_open_folder_dialog.Show() Dim sz_SelectedPath As String = Nothing If nres = -1 Then ''-1 means open... lol For Each selectedItems As Object In raw_data_open_folder_dialog.SelectedItems sz_SelectedPath = selectedItems.ToString() Next TextBox_raw_data_dir.Text = sz_SelectedPath End If raw_app.Quit() ReleaseComObject(raw_app) GC.Collect() GC.WaitForPendingFinalizers() End Sub '' Release excel objects to avoid memory leak Public Sub ReleaseComObject(ByRef obj As Object) Try System.Runtime.InteropServices.Marshal.ReleaseComObject(obj) obj = Nothing Catch ex As Exception obj = Nothing MsgBox("Exception! Failed to release com obj, debug your code.") End Try End Sub

Si desea una versión de C #, creo que es lo suficientemente inteligente como para trasladarla a C # :)


Si está de acuerdo con agregar un paquete nuget, Microsoft.WindowsAPICodePack.Shell tiene un CommonOpenFileDialog que se puede usar en el "modo de carpeta" que debe coincidir con su uso deseado.

var directoryDialog = new CommonOpenFileDialog { IsFolderPicker = true, Title = "Select Folder" };