专业实训9.10

首先在开头,先祝愿天下的所有老师教师节快乐!

WPF本身并没有为我们提供文件浏览的控件, 也不能直接使用Forms中的控件,而文件浏览对话框又是我们最常用的控件之一. 下面是我实现的方式

接下来呢!进入正题

要在项目文件中添加一个打开的对话框操作。

具体实现方式有四个(一一列举,就当给自己科普啦!):

方式1: 使用win32控件OpenFileDialog

?


1

2

3

4

5

6

7

Microsoft.Win32.OpenFileDialog ofd = new Microsoft.Win32.OpenFileDialog();

ofd.DefaultExt = ".xml";

ofd.Filter = "xml file|*.xml";

if (ofd.ShowDialog() == true)

{

     //此处做你想做的事 ...=ofd.FileName;

}

与之类似的还有 Microsoft.Win32.SaveFileDialog

 

方式2: 使用Forms中的OpenFileDialog控件

WPF中是不能直接使用Forms中的控件的,否则会提示找不到Forms名字控件. 如果你仍然要用, 答案便是添加.net 引用reference

之后就可以像下面一样正常使用Forms中的控件了

?


1

2

3

4

5

6

7

8

9

System.Windows.Forms.OpenFileDialog openFileDialog1 = new System.Windows.Forms.OpenFileDialog();

openFileDialog1.InitialDirectory = "c:\\";

openFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";

openFileDialog1.FilterIndex = 2;

openFileDialog1.RestoreDirectory = true;

if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)

{

    //此处做你想做的事 ...=openFileDialog1.FileName;

}

类似的有文件夹浏览对话框:

?


1

2

3

4

5

6

System.Windows.Forms.FolderBrowserDialog folderBrowserDialog = new System.Windows.Forms.FolderBrowserDialog();

System.Windows.Forms.DialogResult result = folderBrowserDialog.ShowDialog();

if (result == System.Windows.Forms.DialogResult.OK)

{

    tb_FolderPath.Text = folderBrowserDialog.SelectedPath;

}

方式三: 使用win32 api

BOOL WINAPI GetOpenFileName(  __inout  LPOPENFILENAME lpofn)

使用这种方式, 你需要自己实现LPOPENFILENAME结构和对GetOpenFileName方法就行封装:

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]

public class OpenFileName

{

    public int structSize = 0;

    public IntPtr hwnd = IntPtr.Zero;

    public IntPtr hinst = IntPtr.Zero;

    public string filter = null;

    public string custFilter = null;

    public int custFilterMax = 0;

    public int filterIndex = 0;

    public string file = null;

    public int maxFile = 0;

    public string fileTitle = null;

    public int maxFileTitle = 0;

    public string initialDir = null;

    public string title = null;

    public int flags = 0;

    public short fileOffset = 0;

    public short fileExtMax = 0;

    public string defExt = null;

    public int custData = 0;

    public IntPtr pHook = IntPtr.Zero;

    public string template = null;

}

public class LibWrap

{

    // Declare a managed prototype for the unmanaged function.

    [DllImport("Comdlg32.dll",SetLastError=true,ThrowOnUnmappableChar=true, CharSet = CharSet.Auto)]

    public static extern bool GetOpenFileName([In, Out] OpenFileName ofn);

}

之后的工作就是实例化、初始化和方法调用了:

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

OpenFileName ofn = new OpenFileName();

ofn.structSize = Marshal.SizeOf(ofn);

ofn.filter = "Project files\0*.xml";

ofn.file = new string(new char[256]);

ofn.maxFile = ofn.file.Length;

ofn.fileTitle = new string(new char[64]);

ofn.maxFileTitle = ofn.fileTitle.Length;

ofn.initialDir = "C:\\";

ofn.title = "Open Project";

ofn.defExt = "xml";

ofn.structSize = Marshal.SizeOf(ofn);

if (LibWrap.GetOpenFileName(ofn))

{

    //此处做你想做的事 ...=ofn.file;

}

方式四: 自己写控件(王道)或者使用第三方控件

第一种方式由于不能自己输入路径, 只能通过鼠标在treeview中进行选择, 十分的不喜欢;第三种稍微复杂;第四种有待考察,听说的第三方有SystemWrapper和WAF; 所以暂时选择第二种.

时间: 2024-08-06 13:23:27

专业实训9.10的相关文章

专业实训8.29

1.本日任务 确定专业实训题目,并查相关学习资料进行学习. 2.题目确定 通过在中国大学生软件设计大赛网站:http://www.cnsoftbei.com/所给出的相关题目中选出自己所看重的题目——基于web的3D模型浏览与交互系统. 3.选题图片 4.选题心路历程 根据所给题目中大多数含有和涉及到硬件操作,鉴于本人分组只是一人一组,操作硬件起来会更加苦难,所以选择一个多为软件操作目:选题结果跟姜中希组相同,但保证只会在大体思路上回有所相同但不会出现代码上的冲突和相似. 5.8月29日任务完成

2016年秋季软件工程专业实训分组及选题情况

实训意义 综合实训旨在为学生提供参与完整软件开发过程的实践经历,并对所涉及的应用领域进行初步了解,培养面向领域的工程能力.项目来源主要是学校或相关合作企业在校内设立专门的学生研究开发项目,可以聘请企业专家组织和指导学生模拟企业环境进行项目开发,给学生带来真实的企业研发的环境和流程.     实训目标 (1)训练学生软件开发流程和规范:体会企业开发流程:熟悉常用开发工具.模板和表格的使用: (2)体会企业中的团队合作规范:培养团队开发和协同工作的能力:熟悉团队成员在软件开发项目中的角色分工及沟通协

专业实训9.5

1.实训时间:2016.9.5上午8:00-11:30 2.实训内容:项目在完成.x文件的固定导入后,尝试文件旋转,缩小,放大功能的开发. 3.具体实现:通过网上百度的源代码,进行阅读和修改. 具体为摄像头的处理. 阅读代码如下: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Lin

专业实训9.7

wpf之3d基础 关于3D方面的东西,本人只是浅尝辄止,从未曾在项目中使用过,相信有不少人也是基于一份兴趣去学习.这里将展示几个基本的WPF 3D编程,希望对初学者有一定帮助. 为帮助理解,这里全部使用C#代码构造,而不是写在XAML中,有兴趣的可以在这里下载源代码.下面来先看下几个效果图.                      下面就第一幅效果图做个基本的讲解. 3D有三个重要元素,模型.灯光.视野.那我们现实来对比,我们要看到一个物体,首先这个物体要存在(即要构造一个模型),其次需要有灯

专业实训题目需求分析

现在云办公是十分流行的办公方式,并且已经得到了一定程度上的应用,有针对性并且相对成熟的云办公软件是很多机关所需要的,实现云办公,这便是该软件的业务需求.该软件的用户类型主要是“团队型”客户,即有一定数量,并且不同用户司职可能相同也可能不同,但本质上是有领导和被领导的关系的,领导可以发布开会时间,地点,会议内容等等,而员工(被领导者)可以根据不同的职位发表最近的工作总结,建议等等相关内容,会议记录也可以存档.用户的需求在于,应用网络实现在线会议,签到等等需求(当然相关功能,该软件已经初步实现),软

专业实训项目需求分析

                     Magic 业务需求:给使用者提供朋友聚会间的一个小魔术,来活跃气氛或增进关系等功能.面向用户的类型:解决了在聚会上大家都沉默不语,各自玩手机的现象.通过这个小软件来表现魔术,吸引大家的注意力,从而使聚会变得更有趣,也更具有增进关系的作用.用户需求:只要你有手机和硬币,可以随时随地的表演魔术.软件需求:界面背景是一个透明的界面,可以直接显示手机原本界面,通过振动感应器来显示一个硬币图案,再次震动就会消失.通过此原理产生硬币进入手机的假象.

专业实训题目需求分析(3D推箱子)

业务需求:    游戏提供主菜单让玩家进行游戏设置.帮助说明,推箱子的小人可以前后左右转动,箱子可以被上下左右的推动,要有关卡设置,障碍物设置,游戏提供背景音乐的功能,要实现3D效果. 面向的用户类型:会使用手机软件的人 用户需求:可以对游戏进行设置,可以上下左右的推箱子,移动小人,要有关卡的转换,有个美好的体验. 软件需求:用户可以对游戏进行设置,用户通过移动小人来改变箱子的位置,游戏每关的关卡都要不一样,有独特的地图,给用户一个美好的体验.

专业实训9.1

安装配置Directx9.0Sdk 1.下载Directx9.0Sdk包(百度中搜索),下载安装后直接点击安装. 2.安装结束后可能会出现(安装错误) 错误原因: 计算机上有安装过更新版的Microsoft Visual C++ 2010 Redistributable,打开“控制面板”的“程序和功能”,果然计算机里之前有安装“Microsoft Visual C++ 2010 x86 Redistributable - 1010.0.40219”,而DXSDK_Jun安装的是“Microsof

专业实训9.4

上次开发结束,开发到在窗体中天剑一个Panel控件,使得3d的效果图像在Panel中显示,今天我们继续向后面开发. 完成功能:简单载入3d模型 1.添加初始化图形设备 PresentParameters presentParams = new PresentParameters();//设置变量 设置其在窗口模式下运行,并将交换效果为Discard:创建设备. 2.导入3d模型函数 private void LoadMesh(string file) { ExtendedMaterial[] m