• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C#对话框-打开和保存对话框(转)

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

//打开文件
            OpenFileDialog openFileDialog = new OpenFileDialog();
            openFileDialog.InitialDirectory = "E:\\";
            openFileDialog.Filter = "Md1 File(*.md1)|*.md1";
            openFileDialog.RestoreDirectory = true;
            openFileDialog.FilterIndex = 1;
            if (openFileDialog.ShowDialog() == DialogResult.OK)
            {
                textBox1.Text = openFileDialog.FileName;
            }

//保存文件

SaveFileDialog sfd = new SaveFileDialog();
            sfd.InitialDirectory = "E:\\";
            sfd.Filter = "jpg文件(*.jpg)|*.jpg|png文件(*.png)|*.png";
            if(sfd.ShowDialog() == DialogResult.OK)
            {
                textBox2.Text = sfd.FileName;
            }


除了PrintPreviewDialog外,其他对话框类都派生于抽象基类CommonDialog,这个基类的办法可以经管Windows通用对话框。


对话框实用的场合:

1.要让用户选择和浏览要打开的文件,应应用OpenFileDialog。这个对话框可以设备为只容许选择一个文件,或可以选择多个文件。

2.应用SaveFileDialog,用户可认为要保存的文件指定一个文件名和浏览的路径。

3.PrintDialog用户选择一个打印机,并设置打印选项。

4.设备页面的边距,凡是应用PageSetupDialog。

5.PrintViewDialog是在屏幕长进行打印预览的一种办法,并有一些选项如缩放。

6.FontDialog列出了所有已安装的Windows字体、样式和字号,以及各字体的预览结果,以便选择字体。

7.ColorDialog用于选择色彩。
 
文件对话框:

l         OpenFileDialog:打开文件对话框

l         SaveFileDialog:保存文件对话框

打开文件对话框

            OpenFileDialog ofd = new OpenFileDialog();

            ofd.ShowDialog();

       会弹出一个打开文件的对话框。 
经由过程批改对象的Title属性,可以更改对话框的题目

如今显示的是“打开”,做如下设置

            ofd.Title = "设置后题目文字:)";

再次运行法度,我们就会看响应的批改 
 
我们还可以经由过程设置InitialDirectory属性来使打开文件对话框打开时在一个设置好的默认路径上。它的默认值是一个空字符串,默示用户的“我的文档”目次,第一次在应用法度中应用这个对话框时,就显示“我的文档”目次下的文件,第二次再打开对话框时,显示的目次就与上一次打开的文件地点的目次雷同。
在实际应用的时辰,不要写死一个路径,若是用户不存在这个路径会呈现错误。为了获取特定的体系文件夹,可以应用System.Environment类的静态办法GetFolderPath()。该办法接管一个Environment.SpecialFolder列举,此中可以定义要返回路径的哪个体系目次。

ofd.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Templates);

设置文件过滤器用于打开文件对话框中显示特定类型的文件。

ofd.Filter = "Text Document(*.txt)|*.txt|All Files|*.*|我要显示的文件类型(*.exe)|*.exe";
 
设置错误的Filter值会产生一个运行异常System.ArgumentException和错误信息“The provided filter string is invalid”。过滤器前后也不容许有空格。

FilterIndex属性指定列表框中的默认选项。

设置文件有效性验证ValidateNames,验证用户输入是否是一个有效的Windows文件名。

CheckPathExists:验证路径有效性

CheckFileExists:验证文件有效性

 ofd.ValidateNames = true;

 ofd.CheckPathExists = true;

 ofd.CheckFileExists = true;

自定义帮助信息:

设置对象的ShowHelp属性可以呈现一个帮助按钮,自定义帮助信息。

经由过程HelpRequest事务添加一个处理惩罚法度。

 ofd.ShowHelp = true;

 ofd.HelpRequest += new EventHandler(ofd_HelpRequest);

 private void ofd_HelpRequest(object sender, EventArgs e)

  {

    MessageBox.Show("我本身定义的帮助信息)";

  }

单击帮助按钮就会显示我定义的帮助信息。

设置Multi属性可以使打开文件对话框打开多个文件。

经由过程如下断定可以获得打开文件对话框单击的是哪个按钮。

  if(ofd.ShowDialog() == DialogResult.OK)

  {

  }

保存文件对话框:

应用Title属性设置对话框的题目。

文件扩大名:

AddExtension是一个布尔属性,它定义了文件扩大名是否应主动添加到用户输入的文件名上。若是用户已经输入了一个文件扩大名,就不会添加其它扩大名了。所以若是用户输入了文件名test,就保存文件test.txt,若是输入了test.txt,保存的文件还是test.txt,而不是test.txt.txt。

若是用户没有输入文件扩大名,就应用DefaultExt属性设置的文件扩大名。若是这个属性为空,就应用当前选择的Filter中定义的文件扩大名。若是设置了Filter和DefaultExt,则非论Filter是什么,都应用Default。

同OpenFileDialog一样,具有ValidateNames、CheckFileExists和CheckPathExists三个属性,差别是对于SaveFileDialog,CheckFileExists的默认值是false,默示可以供给新文件名,进行保存。

若是设置CreatePrompt属性为true,就会询问用户是否要创建一个新文件。

若是设置OverwritePrompt属性为true,就会询问用户是否要覆盖一个已有的文件。

进行如下定义一个保存文件对话框后,我们经由过程如下功能可以实现一个另存为的功能:

SaveFileDialog sfd = new SaveFileDialog();

    private void miFileSaveAs_Click(object sender, EventArgs e)

    {

        if(sfd.ShowDialog() == DialogResult.OK)

        {

            string fileName = sfd.FileName;

            SaveFile(fileName);

        }

    }

    protected void SaveFile(string fileName)

    {

        try

        {

            Stream stream = File.OpenWrite(fileName);

            using(StreamWriter writer = new StreamWriter(stream))

            {

                writer.Write(textBox1.Text);

            }

        }

        catch(IOException ex)

        {

            MessageBox.Show(ex.Message,"Simple Editor",MessageBoxButtons.OK,MessageBoxIcon.Exclamation);

        }

    } 

 打开文件夹

 C# Win应用程序打开对话框如何实现打开文件夹而不打开具体的一个文件?也就是打开对话框中最终获取的是一个文件路径,但并没有具体的文件````答案1

System.Windows.Forms.FolderBrowserDialog folder = new System.Windows.Forms.FolderBrowserDialog(); 
if ( folder.ShowDialog()== DialogResult.OK) 

  this.textBox1.Text = folder.SelectedPath; 
}
创建文件夹

 
 
 
 
 
if (!Directory.Exists(sPath))
{
     Directory.CreateDirectory(sPath);
}

c# 选择文件夹的对话框  

      我们知道,C#里面有选择文件的对话框控件,却没有选择文件夹的对话框控件,不少人为了选择一个文件夹只好自己用TreeView类来处理,其实在C#里面完全不用那么麻烦,我们可以用C#的FolderNameEditor类的子类FolderBrowser类来实现获取浏览文件夹对话框的功能。

  下面来看看具体是怎么实现的。

  首先新建一个winform的项目,再新建一个类文件(File->AddNewItem->Class)。

  因为FolderNameEditor是在System.Windows.Forms.Design命名空间下的,此命名空间位于动态链接库system.design.dll,所以我们要先在解决方案中添加新的引用(reference)System.Design。然后在代码中添加:

using System.Windows.Forms.Design;

  接着,我们新建一个FolderDialog类,此类从FolderNameEditor类继承,在此类中新建一个FolderBrowser类的实例。DisplayDialog(string description)函数用于设置实例fDialog的属性,并且显示浏览文件夹对话框。为了取得文件夹的路径,设置一个Path属性,返回选取文件夹的路径。

  代码如下:

public class FolderDialog : FolderNameEditor
{
  FolderNameEditor.FolderBrowser fDialog = new
  System.Windows.Forms.Design.FolderNameEditor.FolderBrowser();
public FolderDialog()
{
}
public DialogResult DisplayDialog()
{
  return DisplayDialog("请选择一个文件夹");
}

public DialogResult DisplayDialog(string description)
{
  fDialog.Description = description;
  return fDialog.ShowDialog();
}
public string Path
{
  get
  {
    return fDialog.DirectoryPath;
  }
}
  ~FolderDialog()
  {
    fDialog.Dispose();
  }
}

//在winform窗体里写以下代码,可以看看运行效果。

  private void Form1_Load(object sender, System.EventArgs e)
  {
     FolderDialog aa=new FolderDialog ();
     aa.DisplayDialog ();
     MessageBox.Show (aa.Path);
  }

OpenFileDialog控件有以下基本属性

InitialDirectory 对话框的初始目录
Filter 要在对话框中显示的文件筛选器,例如,"文本文件(*.txt)|*.txt|所有文件(*.*)||*.*"
FilterIndex 在对话框中选择的文件筛选器的索引,如果选第一项就设为1
RestoreDirectory 控制对话框在关闭之前是否恢复当前目录
FileName 第一个在对话框中显示的文件或最后一个选取的文件
Title 将显示在对话框标题栏中的字符
AddExtension 是否自动添加默认扩展名
CheckPathExists
在对话框返回之前,检查指定路径是否存在
DefaultExt 默认扩展名
DereferenceLinks 在从对话框返回前是否取消引用快捷方式
ShowHelp
启用"帮助"按钮
ValiDateNames 控制对话框检查文件名中是否不含有无效的字符或序列

  2、 OpenFileDialog控件有以下常用事件

FileOk 当用户点击"打开"或"保存"按钮时要处理的事件
HelpRequest 当用户点击"帮助"按钮时要处理的事件

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace FileDialog
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private string fName;
        private bool isFileHaveName = false;
        private void 打开SToolStripMenuItem_Click(object sender, EventArgs e)
        {
            OpenFileDialog openFileDialog = new OpenFileDialog();
            openFileDialog.InitialDirectory = "c:\\";//注意这里写路径时要用c:\\而不是c:\
            openFileDialog.Filter = "文本文件|*.*|C#文件|*.cs|所有文件|*.*";
            openFileDialog.RestoreDirectory = true;
            openFileDialog.FilterIndex = 1;
            if (openFileDialog.ShowDialog() == DialogResult.OK)
            {
                
                fName = openFileDialog.FileName;
              
                File fileOpen = new File(fName);
                isFileHaveName = true;
                richTextBox1.Text = fileOpen.ReadFile();
                richTextBox1.AppendText("");
            }

        }
    }

///////////在应用于调用WMP控件时////////////////////

openFileDialog1.Filter = "视频文件(*.avi;*.wmv;*.dat;*.mpg;*.mpeg;*.mov;*.wm;*.wma)|*.avi;*.wmv;*.dat;*.mpg;*.mpeg;*.mov;*.wm;*.wma|音频文件(*.wav;*.mp3;*.snd;*.au;*.midi;*.mid)|*.wav;*.mp3;*.snd;*.au;*.midi;*.mid|所有文件(*.*)|*.*";        

//打开的文件类型 

if(openFileDialog1.ShowDialog()==DialogResult.OK) 

   axWindowsMediaPlayer1.FileName = openFileDialog1.FileName; 

  //如果打开的是音频文件,则禁止【视频】菜单组 ,据此可判断打开的文件类型

  if(openFileDialog1.FilterIndex == 2) 

  menuItemVideo.Enabled = false; 

  else 

  menuItemVideo.Enabled = true;    

 }  

OpenFileDialog控件有以下基本属性

InitialDirectory 对话框的初始目录
Filter 要在对话框中显示的文件筛选器,例如,"文本文件(*.txt)|*.txt|所有文件(*.*)||*.*"
FilterIndex 在对话框中选择的文件筛选器的索引,如果选第一项就设为1
RestoreDirectory 控制对话框在关闭之前是否恢复当前目录
FileName 第一个在对话框中显示的文件或最后一个选取的文件
Title 将显示在对话框标题栏中的字符
AddExtension 是否自动添加默认扩展名
CheckPathExists
在对话框返回之前,检查指定路径是否存在
DefaultExt 默认扩展名
DereferenceLinks 在从对话框返回前是否取消引用快捷方式
ShowHelp
启用"帮助"按钮
ValiDateNames 控制对话框检查文件名中是否不含有无效的字符或序列

  2、 OpenFileDialog控件有以下常用事件

FileOk 当用户点击"打开"或"保存"按钮时要处理的事件
HelpRequest 当用户点击"帮助"按钮时要处理的事件

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace FileDialog
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private string fName;
        private bool isFileHaveName = false;
        private void 打开SToolStripMenuItem_Click(object sender, EventArgs e)
        {
            OpenFileDialog openFileDialog = new OpenFileDialog();
            openFileDialog.InitialDirectory = "c:\\";//注意这里写路径时要用c:\\而不是c:\
            openFileDialog.Filter = "文本文件|*.*|C#文件|*.cs|所有文件|*.*";
            openFileDialog.RestoreDirectory = true;
            openFileDialog.FilterIndex = 1;
            if (openFileDialog.ShowDialog() == DialogResult.OK)
            {
                
                fName = openFileDialog.FileName;
              
                File fileOpen = new File(fName);
                isFileHaveName = true;
                richTextBox1.Text = fileOpen.ReadFile();
                richTextBox1.AppendText("");
            }

        }
    }

///////////在应用于调用WMP控件时////////////////////

openFileDialog1.Filter = "视频文件(*.avi;*.wmv;*.dat;*.mpg;*.mpeg;*.mov;*.wm;*.wma)|*.avi;*.wmv;*.dat;*.mpg;*.mpeg;*.mov;*.wm;*.wma|音频文件(*.wav;*.mp3;*.snd;*.au;*.midi;*.mid)|*.wav;*.mp3;*.snd;*.au;*.midi;*.mid|所有文件(*.*)|*.*";        

//打开的文件类型 

if(openFileDialog1.ShowDialog()==DialogResult.OK) 

   axWindowsMediaPlayer1.FileName = openFileDialog1.FileName; 

  //如果打开的是音频文件,则禁止【视频】菜单组 ,据此可判断打开的文件类型

  if(openFileDialog1.FilterIndex == 2) 

  menuItemVideo.Enabled = false; 

  else 

  menuItemVideo.Enabled = true;    

 }  


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
c++自定义异常类发布时间:2022-07-14
下一篇:
C#串口编程遇到的问题以及解决方法发布时间:2022-07-14
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap