访问 2003 和 VS 2010 C#
更新这个软件是为 Windows XP 构建的
我担心的是更新 7 - 谢谢
我创建了一种方法,用户可以在富文本框中插入路径目录的命令参数并将其保存在数据库中。我想创建一个超链接,用户可以在 RichTextBox 中单击该链接,在外部打开 Windows 资源管理器以定位文件所在的位置。我不知道它在我给你的描述中叫什么,但最接近我正在寻找的东西是here和here但我不太确定这是否是我正在寻找的?如果有人可以帮助我,我将不胜感激,在此先感谢。
这是我的 btnOpen_Click 方法...
OpenFileDialog openFileDialog1 = new OpenFileDialog();
openFileDialog1.InitialDirectory = "C:\\";
openFileDialog1.Filter = "Word 97-2003 Document(*.doc)|*.doc|All files(*.*)|*.*";
if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
openFileDialog1.FilterIndex = 0;
openFileDialog1.RestoreDirectory = true;
richTextBox1.Text = Path.GetDirectoryName(openFileDialog1.FileName);
}
try
{
string filePath;
filePath = Path.GetDirectoryName(openFileDialog1.FileName); //Path.GetDirectoryName(openFileDialog1.FileName) openFileDialog1.FileName
richTextBox1.Text = filePath;
}
catch (Exception ex)
{
MessageBox.Show("Error: : " + ex.Message);
}
这是我的插入方法...
private void btnInsert_Click(object sender, EventArgs e)
{
OleDbCommand cmd = new OleDbCommand();
cmd.CommandType = CommandType.Text;
cmd.CommandText = "INSERT INTO Table1 File) Values(@File)
cmd.Parameters.AddWithValue("@File", richTextBox1.Text);
cmd.Connection = myCon;
myCon.Open();
cmd.ExecuteNonQuery();
myCon.Close();
}
File 是 Access 2003 中保存目录的数据字段。顺便说一句,文件数据字段的数据类型为超链接。
从本网站更新 2第二次尝试,此处符合但未打开 Windows 资源管理器
private void richTextBox1_LinkClicked(object sender, LinkClickedEventArgs e)
{
string FilePath = @"C:\myFolder\myFolder";
System.Diagnostics.Process.Start("Explorer.exe", @"/select,""" + FilePath + "\"");
}
更新 3 第三次尝试 这是我的尝试: 目的是当我单击路径时,在 Richtextbox 中,Windows 资源管理器应该打开它没有打开。实际上什么也没发生,也没有错误
我确实想指出文件可以使用插入命令参数保存在不同的文件夹中,但使用相同的驱动器。所以例如..
C:\我的文件夹\我的文件夹1
C:\我的文件夹\我的文件夹2
private void richTextBox1_LinkClicked(object sender, LinkClickedEventArgs e)
{
string FilePath = @"C:\\myFolder\\myFolder";
System.Diagnostics.Process.Start("Explorer.exe", @"/select," + FilePath + e.LinkText);
// 1*
}
private void richTextBox1_TextChanged(object sender, EventArgs e)
{
richTextBox1.LinkClicked += new System.Windows.Forms.LinkClickedEventHandler
(richTextBox1_LinkClicked);
}
// 1* - 如果我将richTextBox1_LinkClicked 代码放在richTextBox1_TextChanged 中,它会在我使用导航按钮时自动打开Windows 资源管理器。
所以我的问题是当路径目录保存在Access 2003数据库中时,当我在richTextBox中选择路径目录时,如何使用richtextbox打开Windows资源管理器?
当我使用我不想这样做的导航按钮时,使用此“我的文档”打开更新 4 ..
private void richTextBox1_TextChanged(object sender, EventArgs e)
{
string FilePath = @"C\\Windows";
System.Diagnostics.ProcessStartInfo exploreTest = new System.Diagnostics.ProcessStartInfo();
exploreTest.FileName = "Explorer.exe";
exploreTest.Arguments = FilePath;
System.Diagnostics.Process.Start(exploreTest);
}
private void richTextBox1_LinkClicked(object sender, LinkClickedEventArgs e, string path)
{
System.Diagnostics.Process.Start(e.LinkText);
}
更新 5
这样它就可以工作,但如上所述,它会自动打开带有导航按钮的路径目录。我不希望这种情况发生。我想单击富文本框中的链接以打开 Windows 资源管理器。我正在使用家里的代码并在这里学习导航。richTextBox1_LinkClicked 事件不起作用。
private void richTextBox1_TextChanged(object sender, EventArgs e)
{
string FilePath = @"C:\MyFolder\myFolder";
System.Diagnostics.Process.Start("Explorer.exe", @"/select,""" + FilePath + "\"");
}
private void richTextBox1_LinkClicked(object sender, LinkClickedEventArgs e)
{
System.Diagnostics.Process.Start(e.LinkText);
}
更新 6 使用导航按钮时打开 Windows 资源管理器的原因是 richTextBox1_TextChanged 中的一段代码。如果我在richTextBox1_MouseClick 方法中使用那段代码,那么资源管理器将打开。
更新 7 我正在使用导航按钮,从主页和学习网站。我创建了一个富文本框来打开默认的窗口资源管理器路径目录。我试图通过使用选择查询来进一步扩展,其中 id 是等,所以当 Windows 资源管理器在外部打开时可以根据表 ID 打开不同的路径目录吗?
例如有两个 doc 文件,Test.doc 和 Test.doc...
ID = 1 的路径目录如 = myFolder\myFolder\Test.doc
ID = 2 的路径目录如 = myFolder\myFolder2\Test2.doc
有没有可能做这样的事情..
private void richTextBox1_MouseClick(object sender, MouseEventArgs e)
{
OleDbCommand cmd = new OleDbCommand();
cmd.CommandType = CommandType.Text;
cmd.CommandText = @"SELECT File FROM Table1 WHERE ID = @ID";
cmd.Parameters.AddWithValue("@ID", txtID.Text);
string FilePath = cmd.CommandText;
// FilePath = @"C:\\myFolder\myFolder";
System.Diagnostics.Process.Start("Explorer.exe", @"/select," + FilePath);
cmd.Connection = myCon;
myCon.Open();
cmd.ExecuteNonQuery();
myCon.Close();
}
提前致谢