É comum que muitos programadores que estão iniciando no .NET Framework tenham dificuldade com a utilização das caixas de diálogo padrão disponíveis no Visual Studio. Muitas vezes, até por não costumarem utilizá-los, programadores com um pouco mais de experiência desconhecem as funcionalidades destes componentes.

Na Toolbox do Visual Studio, no grupo Dialogs, existem nativamente cinco componentes, como podemos ver na Figura 1: ColorDialog, FolderBrowserDialog, FontDialog, OpenFileDialog e SaveFileDialog.

Grupo Dialogs da Toolbox

Figura 1: Grupo Dialogs da Toolbox

Neste artigo, veremos algumas das principais propriedades de cada um desses componentes e sua utilização, através de um exemplo prático nas linguagens C# e Visual Basic.

Então, para iniciar, criemos uma aplicação de formulários Windows (Windows Forms Application) e adicionemos ao form principal os seguintes componentes, mantendo sua nomenclatura original:

  • Button (Text = “Color Dialog”)
  • Button (Text = “Font Dialog”)
  • Button (Text = “Folder Browser Dialog”)
  • Button (Text = “Open File Dialog”)
  • Button (Text = “Save File Dialog”)
  • RichTextBox: Text = Conteúdo qualquer para teste
  • ColorDialog
  • FontDialog
  • FolderBrowserDialog
  • OpenFileDialog
  • SaveFileDialog

No meu caso, a aparência do form ficou como na Figura 2, mas o leitor pode organizar os controles da forma como preferir.

Configuração de componentes o form

Figura 2: Configuração de componentes o form

Cada um dos botões será utilizado para demonstrar o funcionamento de um dos componentes de diálogo citados, conforme indica seu texto. Então, as listagens a seguir mostram o código que deve ser adicionado ao evento Click de cada botão.

ColorDialog

Este componente permite exibir uma caixa de seleção de cores. Algumas propriedades merecem destaque:

  • AllowFullOpen: indica se o usuário poderá abrir a paleta de seleção de cor personalizada, ou apenas escolher uma entre as predefinidas.
  • Color: a cor que deve estar selecionada por padrão quando a caixa de diálogo for aberta.
  • FullOpen: define se a caixa de seleção de cores personalizadas será automaticamente aberta.
  • ShowHelp: define se o botão “Ajuda” vai ser exibido. Se definida como verdadeira, o clique do botão “Ajuda” deve ser tratado através do evento HelpRequest.

As listagem 1 e 2 mostra como alterar a cor do plano de fundo do RichTextBox utilizando este componente. O código das listagens deve ser inserido no evento Click do primeiro botão.

Listagem 1: Utilização do ColorDialog em C#

if (colorDialog1.ShowDialog() == DialogResult.OK)
{
    richTextBox1.BackColor = colorDialog1.Color;
}

Listagem 2: Utilização do ColorDialog em Visual Basic

If colorDialog1.ShowDialog = DialogResult.OK Then
richTextBox1.BackColor = colorDialog1.Color
End If

É necessária fazer a verificação do resultado do método ShowDialog pois a cor do RichTextBox só deve ser alterada se o usuário clicar em Ok. Caso o botão Cancelar fosse clicado, o retorno do método seria DialogResult.Cancel.

FontDialog

Do nome do componente, já depreende-se que ele é usado para exibir uma janela de seleção de fontes. As propriedades mais utilizadas e que, portanto merecem destaque são:

  • Color: a cor da fonte exibida na janela (esta cor, porém, não define a cor da fonte selecionada, deve-se usar a propriedade ForeColor dos controles a serem modificados).
  • Font: a fonte selecionada por padrão.
  • FontMustExists: quando verdadeira, gera um erro caso o usuário escolha uma fonte que não existe.
  • MaxSize: o tamanho máximo permitido para a fonte selecionada.
  • MinSize: o tamanho mínimo permitido para a fonte selecionada.
  • ShowApply: quando verdadeira, o botão “Aplicar” será exibido na janela. Nesse caso, o clique deste botão deve ser tratado no evento Apply.
  • ShowHelp: define se o botão “Ajuda” vai ser exibido. Se definida como verdadeira, o clique do botão “Ajuda” deve ser tratado através do evento HelpRequest.

As listagens 3 e 4 mostram como utilizar este componente para alterar a fonte do RichTextBox em tempo de execução.

Listagem 3: Utilização do FontDialog em C#

if (fontDialog1.ShowDialog() == DialogResult.OK)
{
richTextBox1.Font = fontDialog1.Font;
}

Listagem 4: Utilização do FontDialog em Visual Basic

If fontDialog1.ShowDialog = DialogResult.OK Then
richTextBox1.Font = fontDialog1.Font
End If

A mesma verificação é feita quanto ao retorno do método ShowDialog, isso deve se repetir para os demais componentes, sempre pelo mesmo motivo.

FolderBrowserDialog

O FolderBrowserDialog exibe uma janela de seleção de diretórios. Arquivos não podem ser selecionados por este componente, apenas pastas. As propriedades que merecem destaque são as listadas a seguir.

  • Description: texto a ser exibido na caixa de diálogo.
  • RootFolder: pasta raiz de seleção, logo, só é possível selecionar esta mesma pasta ou subpastas suas.
  • SelectedPath: caminho da pasta selecionada por padrão. Deve obedecer a propriedade acima.
  • ShowNewFolderButton: define quando o botão “Criar nova pasta” será exibido, permitindo que o usuário crie novos diretórios pela caixa de diálogo.

As listagens 5 e 6 mostram como listar os arquivos de um diretório utilizando este componente.

Listagem 5: Utilização do FolderBrowserDialog em C#

if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
{
richTextBox1.Text = String.Empty;
string pasta = folderBrowserDialog1.SelectedPath;
       foreach (string s in System.IO.Directory.GetFiles(pasta))
       {
       	richTextBox1.AppendText(s + Environment.NewLine);
}
}

Listagem 6: Utilização do FolderBrowserDialog em Visual Basic

If folderBrowserDialog1.ShowDialog = DialogResult.OK Then
richTextBox1.Text = String.Empty
       Dim pasta As String = folderBrowserDialog1.SelectedPath
       For Each s As String In System.IO.Directory.GetFiles(pasta)
       	richTextBox1.AppendText(s + Environment.NewLine)
Next
End If

Nos códigos acima foi utilizado o método GetFiles da classe Directory, cuja explicação não é o foco deste artigo. Porém, a principal parte desse trecho é a execução do diálogo e obtenção da pasta selecionada através da propriedade SelectedPath.

OpenFileDialog

Esta caixa de diálogo é utilizada para selecionar um arquivo existente. As propriedade mais utilizadas são as seguintes.

  • CheckFileExists: define se será exibida uma mensagem de erro caso o arquivo selecionado não exista.
  • ChekPathExists: define se será exibida uma mensagem de erro caso o diretório selecionado não exista.
  • DefaultExt: extensão de arquivo selecionada por padrão.
  • FileName: nome do arquivo selecionado por padrão.
  • Filter: filtro de extensão para seleção de arquivos no formato “Descrição do Filtro|*.extensao|Todos os formatos|*.*””.
  • FilterIndex: filtro selecionado por padrão.
  • InitialDirectory: diretório inicial selecionado na caixa de diálogo.
  • MultiSelect: indica quando o usuário poderá selecionar mais de um arquivo.
  • ShowHelp: define se o botão “Ajuda” vai ser exibido. Se definida como verdadeira, o clique do botão “Ajuda” deve ser tratado através do evento HelpRequest.
  • Title: título da caixa de diálogo.

As listagens 7 e 8 mostram como abrir um arquivo e exibi-lo no RichTextBox utilizando o OpenFileDialog.

Listagem 7: Utilização do OpenFileDialog em C#

if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
richTextBox1.LoadFile(openFileDialog1.FileName);
}

Listagem 8: Utilização do OpenFileDialog em Visual Basic

If openFileDialog1.ShowDialog = DialogResult.OK Then
richTextBox1.LoadFile(openFileDialog1.FileName)
End If

Por padrão, o método LoadFile do RichTextBox só permite a leitura de arquivos de extensão RTF. Como o foco deste arquivo não é o carregamento e exibição de arquivos de texto, utilizaremos apenas este exemplo.

Caso a propriedade MultiSelect estivesse marcada como verdadeira, deveríamos utilizar a propriedade FileNames no lugar de FileName para ler os vários arquivos selecionados.

SaveFileDialog

Este último componente é utilizado para se trabalhar com gravação de arquivos (salvar). Suas propriedades são, em maioria, iguais a do OpenFileDialog, apenas uma merece atenção diferenciada.

  • OvewritePrompt: define se será exibida uma mensagem de confirmação caso o usuário tente salvar um arquivo com um nome que já existe.

Um exemplo de utilização deste componente para salvar o conteúdo do RichTextBox é mostrado nas listagens 9 e 10.

Listagem 9: Utilização do SaveFileDialog em C#

if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
richTextBox1.SaveFile(saveFileDialog1.FileName);
}

Listagem 10: Utilização do SaveFileDialog em Visual Basic

If saveFileDialog1.ShowDialog = DialogResult.OK Then
richTextBox1.SaveFile(saveFileDialog1.FileName)
End If

Para tornar mais prática a execução deste exemplo, podemos definir a propriedade Filter do SaveFileDialog como “Arquivo RTF|*.rtf”. Assim, a extensão rtf será selecionada como padrão.

Conclusão

Vimos neste artigo que não é uma tarefa complexa utilizar as caixas de diálogo padrão disponíveis no Visual Studio, conhecemos suas principais propriedades e exemplos práticos de uso.

Espero que este conteúdo possa ser útil. Agradeço a atenção do leitor e por aqui me despeço.