所以我写的原始程序是在c:\ temp位置的comboBox上显示pdf文件列表。但是后来,我想给用户一个更改文件夹的选项,所以我创建了另一个名为Form2的表单。仅当用户按下Form1中的按钮时,此Form2才打开;当用户按下Form2中的“保存”按钮时,此Form2将关闭。所以,我用Form2编写了代码。 btnSDS打开文件路径并在textBox上显示该路径。如何使Form1从Form2获取文件夹位置?
过程
用户启动程序,并打开表格1并从默认文件夹中获取pdf文件名。
用户想要更改默认文件夹,因此他从表单1单击管理按钮,并打开表单2,即管理表单。
用户从文件夹2更改文件夹1的默认文件夹设置并关闭文件夹2。
文件夹1中的默认文件夹设置更改。
当用户再次打开文件夹2时,默认文件夹设置保留在文件夹2的文本框中。
// Form2
private void btnSDS_Click(object sender, EventArgs e)
{
var folderBrowserDialog1 = new FolderBrowserDialog();
// Show the FolderBrowserDialog.
DialogResult result = folderBrowserDialog1.ShowDialog();
if (result == DialogResult.OK)
{
string folderName = folderBrowserDialog1.SelectedPath;
textBoxSDSLocation.Text = folderName;
}
}
// Form1
private void Form1_Load(object sender, EventArgs e)
{
DirectoryInfo test = new DirectoryInfo(@"c:\temp"); //Assuming Test is your Folder
FileInfo[] Files = test.GetFiles("*.pdf"); //Getting Text files
comboSDS.DataSource = Files;
comboSDS.DisplayMember = "Name";
}
private void comboSDS_SelectedIndexChanged(object sender, EventArgs e)
{
//axAcroPDF2.LoadFile(@"C:\temp\" + comboSDS.Text);
//axAcroPDF2.src = @"C:\temp\" + comboSDS.Text;
axAcroPDF2.LoadFile(@"Form2.textBoxSDSLocation.Text" + comboSDS.Text);
axAcroPDF2.src = @"Form2.textBoxSDSLocation.Text" + comboSDS.Text;
axSetting();
}
答案 0 :(得分:0)
实际上,您需要设计一个对话框表单。
有一个预定义的对话框,用于在Windows Form项目中选择文件夹。称为FolderBrowserDialog
,这是该示例代码:
privatevoid BrowseFolderButton_Click(object sender, EventArgs e) {
FolderBrowserDialog folderDlg = newFolderBrowserDialog();
folderDlg.ShowNewFolderButton = true;
// Show the FolderBrowserDialog.
DialogResult result = folderDlg.ShowDialog();
if (result == DialogResult.OK) {
textBox1.Text = folderDlg.SelectedPath;
Environment.SpecialFolder root = folderDlg.RootFolder;
}
}
您可以使用以下代码设置默认路径:
folderDlg .SelectedPath = //myFolder;
如果您不想使用此默认值。您可以构建自己的对话框。在Form2中:
public partial class Form2:Form
{
public string SelectedPath {get; set;}
private SelectPath_Click(object sender, EventArgs e)
{
// if path is a valid path {
SelectedPath = txtBoxPath.text;
this.DialogResult = DialogResult.OK;
this.Close();
// } else { CloseForm or Display an Error or ... }
}
}
这很清楚,我在第二个表单中添加了一个Button。您可能想选择另一种方式。
您可以使用诸如FolderBrowserDialog( SampleCode )之类的代码:
Form2 FolderDialog = new Form2();
if (FolderDialog.ShowDialog() == DialogResult.OK)
{
/// Set New Path
Foo.Text = FolderDialog.SelectedPath;
}
else
{
// User Didn't selected a Valid path or he closed your form without response.
}