如何保留上次使用的文件夹并将其放入表单打开时的文本框中?
How to keep the last used folder and put it in a textbox when a form opens?
加载 C# 窗体时,我希望在属于默认登录用户的文本框中有一个文件夹。
我有输入和输出文件的文本框和按钮,当打开表单时,我希望用户看到他保存上一个输出文件的默认文件夹。
我该怎么做?
在解决方案资源管理器中双击项目 Properties
部分中的 Settings.settings
。
打开包含网格视图的参数向导。
在底部,添加一个名为 LastPath
的参数并将其设置为 string
类型并选择可以为空的默认值。
如果您选择将其设置为空(推荐),请在静态 Program
class 中添加这些变量:
static string UserDataFolderPath
= Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
+ Path.DirectorySeparatorChar
+ AssemblyCompany
+ Path.DirectorySeparatorChar
+ AssemblyTitle
+ Path.DirectorySeparatorChar;
static string UserDocumentsFolderPath
= Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
+ Path.DirectorySeparatorChar
+ AssemblyCompany
+ Path.DirectorySeparatorChar
+ AssemblyTitle
+ Path.DirectorySeparatorChar;
还有这些方法:
static public string AssemblyCompany
{
get
{
object[] attributes = Assembly.GetExecutingAssembly()
.GetCustomAttributes(typeof(AssemblyCompanyAttribute), false);
if ( attributes.Length == 0 )
{
return "";
}
return ( (AssemblyCompanyAttribute)attributes[0] ).Company;
}
}
static public string AssemblyTitle
{
get
{
object[] attributes = Assembly.GetExecutingAssembly()
.GetCustomAttributes(typeof(AssemblyTitleAttribute), false);
if ( attributes.Length > 0 )
{
AssemblyTitleAttribute titleAttribute = (AssemblyTitleAttribute)attributes[0];
if ( titleAttribute.Title != "" )
{
return titleAttribute.Title;
}
}
return Path.GetFileNameWithoutExtension(Assembly.GetExecutingAssembly().CodeBase);
}
}
在Main
方法开头添加:
Directory.CreateDirectory(UserDataFolderPath);
Directory.CreateDirectory(UserDocumentsFolderPath);
if ( Properties.Settings.Default.LastPath == "" )
{
Properties.Settings.Default.LastPath = UserDataFolderPath;
Properties.Settings.Default.Save();
}
现在要获取它,您可以在表单的 FormLoad
事件中写入:
textBox1.Text = Properties.Settings.Default.LastPath;
放入FormClosed
事件:
Properties.Settings.Default.LastPath = textBox1.Text;
Properties.Settings.Default.Save();
这里应该是你的 Program.cs
:
using System;
using System.IO;
using System.Reflection;
using System.Windows.Forms;
namespace WindowsFormsAppTest
{
static class Program
{
[STAThread]
static void Main()
{
Directory.CreateDirectory(UserDataFolderPath);
Directory.CreateDirectory(UserDocumentsFolderPath);
if ( Properties.Settings.Default.LastPath == "" )
{
Properties.Settings.Default.LastPath = UserDataFolderPath;
Properties.Settings.Default.Save();
}
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new FormTest());
}
static string UserDataFolderPath
= Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
+ Path.DirectorySeparatorChar
+ AssemblyCompany
+ Path.DirectorySeparatorChar
+ AssemblyTitle
+ Path.DirectorySeparatorChar;
static string UserDocumentsFolderPath
= Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
+ Path.DirectorySeparatorChar
+ AssemblyCompany
+ Path.DirectorySeparatorChar
+ AssemblyTitle
+ Path.DirectorySeparatorChar;
static public string AssemblyCompany
{
get
{
object[] attributes = Assembly.GetExecutingAssembly()
.GetCustomAttributes(typeof(AssemblyCompanyAttribute), false);
if ( attributes.Length == 0 )
{
return "";
}
return ( (AssemblyCompanyAttribute)attributes[0] ).Company;
}
}
static public string AssemblyTitle
{
get
{
object[] attributes = Assembly.GetExecutingAssembly()
.GetCustomAttributes(typeof(AssemblyTitleAttribute), false);
if ( attributes.Length > 0 )
{
AssemblyTitleAttribute titleAttribute = (AssemblyTitleAttribute)attributes[0];
if ( titleAttribute.Title != "" )
{
return titleAttribute.Title;
}
}
return Path.GetFileNameWithoutExtension(Assembly.GetExecutingAssembly().CodeBase);
}
}
}
}
还有你的Form.cs
:
using System;
using System.Windows.Forms;
namespace WindowsFormsAppTest
{
public partial class FormTest : Form
{
public FormTest()
{
InitializeComponent();
}
private void FormTest_Load(object sender, EventArgs e)
{
textBox1.Text = Properties.Settings.Default.LastPath;
}
private void FormTest_FormClosed(object sender, FormClosedEventArgs e)
{
Properties.Settings.Default.LastPath = textBox1.Text;
Properties.Settings.Default.Save();
}
}
}
加载 C# 窗体时,我希望在属于默认登录用户的文本框中有一个文件夹。
我有输入和输出文件的文本框和按钮,当打开表单时,我希望用户看到他保存上一个输出文件的默认文件夹。
我该怎么做?
在解决方案资源管理器中双击项目 Properties
部分中的 Settings.settings
。
打开包含网格视图的参数向导。
在底部,添加一个名为 LastPath
的参数并将其设置为 string
类型并选择可以为空的默认值。
如果您选择将其设置为空(推荐),请在静态 Program
class 中添加这些变量:
static string UserDataFolderPath
= Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
+ Path.DirectorySeparatorChar
+ AssemblyCompany
+ Path.DirectorySeparatorChar
+ AssemblyTitle
+ Path.DirectorySeparatorChar;
static string UserDocumentsFolderPath
= Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
+ Path.DirectorySeparatorChar
+ AssemblyCompany
+ Path.DirectorySeparatorChar
+ AssemblyTitle
+ Path.DirectorySeparatorChar;
还有这些方法:
static public string AssemblyCompany
{
get
{
object[] attributes = Assembly.GetExecutingAssembly()
.GetCustomAttributes(typeof(AssemblyCompanyAttribute), false);
if ( attributes.Length == 0 )
{
return "";
}
return ( (AssemblyCompanyAttribute)attributes[0] ).Company;
}
}
static public string AssemblyTitle
{
get
{
object[] attributes = Assembly.GetExecutingAssembly()
.GetCustomAttributes(typeof(AssemblyTitleAttribute), false);
if ( attributes.Length > 0 )
{
AssemblyTitleAttribute titleAttribute = (AssemblyTitleAttribute)attributes[0];
if ( titleAttribute.Title != "" )
{
return titleAttribute.Title;
}
}
return Path.GetFileNameWithoutExtension(Assembly.GetExecutingAssembly().CodeBase);
}
}
在Main
方法开头添加:
Directory.CreateDirectory(UserDataFolderPath);
Directory.CreateDirectory(UserDocumentsFolderPath);
if ( Properties.Settings.Default.LastPath == "" )
{
Properties.Settings.Default.LastPath = UserDataFolderPath;
Properties.Settings.Default.Save();
}
现在要获取它,您可以在表单的 FormLoad
事件中写入:
textBox1.Text = Properties.Settings.Default.LastPath;
放入FormClosed
事件:
Properties.Settings.Default.LastPath = textBox1.Text;
Properties.Settings.Default.Save();
这里应该是你的 Program.cs
:
using System;
using System.IO;
using System.Reflection;
using System.Windows.Forms;
namespace WindowsFormsAppTest
{
static class Program
{
[STAThread]
static void Main()
{
Directory.CreateDirectory(UserDataFolderPath);
Directory.CreateDirectory(UserDocumentsFolderPath);
if ( Properties.Settings.Default.LastPath == "" )
{
Properties.Settings.Default.LastPath = UserDataFolderPath;
Properties.Settings.Default.Save();
}
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new FormTest());
}
static string UserDataFolderPath
= Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
+ Path.DirectorySeparatorChar
+ AssemblyCompany
+ Path.DirectorySeparatorChar
+ AssemblyTitle
+ Path.DirectorySeparatorChar;
static string UserDocumentsFolderPath
= Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
+ Path.DirectorySeparatorChar
+ AssemblyCompany
+ Path.DirectorySeparatorChar
+ AssemblyTitle
+ Path.DirectorySeparatorChar;
static public string AssemblyCompany
{
get
{
object[] attributes = Assembly.GetExecutingAssembly()
.GetCustomAttributes(typeof(AssemblyCompanyAttribute), false);
if ( attributes.Length == 0 )
{
return "";
}
return ( (AssemblyCompanyAttribute)attributes[0] ).Company;
}
}
static public string AssemblyTitle
{
get
{
object[] attributes = Assembly.GetExecutingAssembly()
.GetCustomAttributes(typeof(AssemblyTitleAttribute), false);
if ( attributes.Length > 0 )
{
AssemblyTitleAttribute titleAttribute = (AssemblyTitleAttribute)attributes[0];
if ( titleAttribute.Title != "" )
{
return titleAttribute.Title;
}
}
return Path.GetFileNameWithoutExtension(Assembly.GetExecutingAssembly().CodeBase);
}
}
}
}
还有你的Form.cs
:
using System;
using System.Windows.Forms;
namespace WindowsFormsAppTest
{
public partial class FormTest : Form
{
public FormTest()
{
InitializeComponent();
}
private void FormTest_Load(object sender, EventArgs e)
{
textBox1.Text = Properties.Settings.Default.LastPath;
}
private void FormTest_FormClosed(object sender, FormClosedEventArgs e)
{
Properties.Settings.Default.LastPath = textBox1.Text;
Properties.Settings.Default.Save();
}
}
}