目录
1 需求说明
在实际开发过程中,经常会遇到给定输入路径和输出路径,然后程序处理后将处理结果输出到指定的输出路径中去
以ArcMap的3D Analyst --》 栅格计算 --》转为整型为例,如下图
由上图可知:界面由文本框和按钮组成,支持文件拖拽,点击【显示帮助】按钮,可以弹出对功能的使用描述信息
2 TextBox空间拖拽文件自动获取其路径
2.1 设置AllowDrop属性为true
方法一:代码实现
private void Form1_Load(object sender, EventArgs e)
{
txt_input.AllowDrop = true;
txt_output.AllowDrop = true;
}
方法二:属性选择
2.2 添加DropEnter事件
private void txt_input_DragEnter(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.FileDrop))
{
e.Effect = DragDropEffects.Link;
}
else
{
e.Effect = DragDropEffects.None;
}
}
2.3 添加DragDrop
//拖放完成时发生
private void txt_input_DragDrop(object sender, DragEventArgs e)
{
txt_input.Text = ((System.Array)e.Data.GetData(DataFormats.FileDrop)).GetValue(0).ToString();
//这里是支持多选的,多选的结果保存在一个数组中,我们默认取数组的第一个元素为输入文件或目录的路径
}
2.4 效果演示
3 文件输入与输出功能的设计与思考
3.1 文件输入功能
有两种方式可采用:
方式一,直接拖拽法【即第二部分介绍的方法】;
方法三,按钮添加法
private void btn_input_Click(object sender, EventArgs e)
{
OpenFileDialog pfd = new OpenFileDialog();
pfd.Title = "待文件存储的路径的标题";
pfd.Multiselect = false;
if (pfd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
txt_input.Text = pfd.FileName;
}
}
3.2 文件输出功能
private void btn_output_Click(object sender, EventArgs e)
{
SaveFileDialog sfd = new SaveFileDialog();
sfd.Title = "文件要保存的位置";
if (sfd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
txt_output.Text = sfd.FileName;
}
}
3.3 总结
对于输入文件,可采用直接拖拽法、通过按钮调用对话框两种方法获取其路径信息;对于输出文件,最好的策略是通过按钮调用保存对话框,设定输出文件的路径
4 目录输入和输出功能设计与思考
目录的获取方式:直接复制法、拖拽法、按钮调用法
private void btn_input_Click(object sender, EventArgs e)
{
FolderBrowserDialog fbd = new FolderBrowserDialog();
fbd.Description = "目录描述信息";
if (fbd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
txt_input.Text = fbd.SelectedPath;
}
}
5 执行部分的代码示例
private void btn_exec_Click(object sender, EventArgs e)
{
if (txt_input.Text == "" || txt_output.Text == "")
{
MessageBox.Show("指定的目录或路径为空", "错误提示");
}
if (File.Exists(txt_input.Text))
{
MessageBox.Show("指定文件的不存在", "错误提示");
}
if (Directory.Exists(txt_output.Text))
{
MessageBox.Show("指定目录的不存在", "错误提示");
}
//核心算法代码
}
更多精彩欢饮关注个人微信公众帐号【学而立行】