0

我下面的程序是一个简单的 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;
            }
        }
    }
}
4

3 回答 3

2

在 .doc 文件中搜索会有点困难,因为 doc 文件包含标记,以便您能够装饰文本(使用不同的字体、粗体、斜体、边距等)。有第三方库和产品可以帮助您解决这个问题。另一方面,txt 文件是纯文本,这就是为什么你没有这个问题的原因。

为了实现验证,您可以使用 File 静态类并检查文件的扩展名并决定下一步做什么。您还可以使用 System.IO.Path.GetExtension 方法,该方法采用文件名并为您提供扩展名。

于 2012-04-21T05:16:26.610 回答
2

为了搜索 Word 文件,您需要以下代码:

第一次引用 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

于 2012-04-21T05:22:19.717 回答
0

我不确定你在寻找什么。这里有一些建议:

1) 在 OpenFileDialog 中仅显示 .txt 文件:

参考:OpenFileDialog 过滤器属性

// 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():

参考:String.EndsWith () 方法

if (myfile.EndsWith (".txt", true, null) {
  ..

3) 要调用 .txt 文件类型的默认程序,请使用 ShellExec():

参考:UseShellExecute 属性

   System.Diagnostics.ProcessStartInfo info = 
     new System.Diagnostics.ProcessStartInfo("c:\\temp\\myfile.txt");

   info.UseShellExecute = true;
   info.Verb = "open";

   System.Diagnostics.Process.Start(info);

'希望有帮助!

于 2012-04-21T05:19:17.997 回答