我的程序下面是一个简单的Windows窗体,它在目录中搜索一个文件,然后打开,读取和写入,之后有一个搜索按钮,用于搜索文件中的单词,但我只能对文件执行此操作有一个.txt扩展名可以帮助我,我想这样做word文档,我想打开文件与.txt和.doc扩展名如果该文件是另一个扩展名我想弹出一个错误,它不能打开文件这是我下面的代码,是否有人可以帮我修改这个程序或给我一些想法
namespace my_project
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
OpenFileDialog of = new OpenFileDialog();
of.ShowDialog();
textBox1.Text = of.FileName;
}
private void button2_Click(object sender, EventArgs e)
{
StreamReader sr = new StreamReader(textBox1.Text);
richTextBox1.Text = sr.ReadToEnd();
sr.Close();
}
private void button3_Click(object sender, EventArgs e)
{
StreamWriter sw = new StreamWriter(textBox1.Text, true);
sw.WriteLine(textBox2.Text);
sw.Close();
}
private void button4_Click(object sender, EventArgs e)
{
int index = 0; string temp = richTextBox1.Text; richTextBox1.Text = ""; richTextBox1.Text = temp;
while (index < richTextBox1.Text.LastIndexOf(textBox3.Text))
{
richTextBox1.Find(textBox3.Text, index, richTextBox1.TextLength, RichTextBoxFinds.None);
richTextBox1.SelectionBackColor = Color.Yellow;
index = richTextBox1.Text.IndexOf(textBox3.Text, index) + index;
}
}
}
}
答案 0 :(得分:2)
在.doc文件中搜索会有点困难,因为doc文件包含标记,以便您能够装饰文本(使用不同的字体,粗体,斜体,边距等)。有第三方库和产品可能会帮助您解决这个问题。另一方面,Txt文件是纯文本,这就是为什么你没有这个问题的原因。
为了实现验证,您可以使用File静态类并检查文件的扩展名并决定下一步该做什么。您还可以使用System.IO.Path.GetExtension方法,该方法获取文件名并为您提供扩展名。
答案 1 :(得分:2)
要搜索Word文件,您需要以下代码:
1st引用Microsoft 12或14对象库。
Microsoft.Office.Interop.Word.ApplicationClass wordObject = new ApplicationClass();
object file = textBox1.Text; //this is the path
object nullobject = System.Reflection.Missing.Value;
Microsoft.Office.Interop.Word.Document docs = wordObject.Documents.Open
(ref file, ref nullobject, ref nullobject, ref nullobject,
ref nullobject, ref nullobject, ref nullobject, ref nullobject,
ref nullobject, ref nullobject, ref nullobject, ref nullobject,
ref nullobject, ref nullobject, ref nullobject, ref nullobject);
docs.ActiveWindow.Selection.WholeStory();
docs.ActiveWindow.Selection.Copy();
IDataObject data = Clipboard.GetDataObject();
richTextBox1.Text = data.GetData(DataFormats.Text).ToString();
docs.Close(ref nullobject, ref nullobject, ref nullobject);
如果您的目标是.Net 4.0,它支持可选参数,因此您不需要所有nullobject的
答案 2 :(得分:0)
我不确定你到底在找什么。以下是一些建议:
1)仅在OpenFileDialog中显示.txt文件:
参考:OpenFileDialog Filter property
// Create an instance of the open file dialog box.
OpenFileDialog openFileDialog1 = new OpenFileDialog();
// Set filter options and filter index.
openFileDialog1.Filter = "Text Files (.txt)|*.txt|All Files (*.*)|*.*";
openFileDialog1.FilterIndex = 1;
...
2)要查看文件是否具有.txt扩展名,请使用String.EndsWith():
if (myfile.EndsWith (".txt", true, null) {
..
3)要调用.txt文件类型的默认程序,请使用ShellExec():
System.Diagnostics.ProcessStartInfo info =
new System.Diagnostics.ProcessStartInfo("c:\\temp\\myfile.txt");
info.UseShellExecute = true;
info.Verb = "open";
System.Diagnostics.Process.Start(info);
'希望有所帮助!