2

我想打开一个文本文件并将一些数据写入文件。这是我的代码:

        FileStream fs1 = new FileStream("D:\\Yourfile.txt", FileMode.OpenOrCreate, FileAccess.Write);
        StreamWriter writer = new StreamWriter(fs1);
        writer.Write("Hello");
        writer.Close();
         System.Diagnostics.Process.Start(@"D:\\Yourfile.txt");

这段代码工作正常。但首先文件被保存。我想要一个文本文件与数据一起打开并让用户保存文本文件。可能吗?

4

3 回答 3

3

如果我对您的理解正确,您希望您的程序打开记事本并在其中输入一些文本。然后,用户将决定是否保存文件。

如果是这种情况,您可以使用Process该类启动记事本。一旦你这样做了,你可以触发一系列键盘事件(模仿键),这样你就会有文本。

话虽如此,我认为更清洁的解决方案是打开一个带有文本区域/文本框的单独表单,以便用户可以阅读。然后,有一个名为的按钮Save,它基本上可以完成您已经在做的事情。

于 2013-08-27T12:19:00.517 回答
2

试试这个会解决你的问题

        [DllImport("user32.dll", EntryPoint = "FindWindowEx")]
        public static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow);
        [DllImport("User32.dll")]
        public static extern int SendMessage(IntPtr hWnd, int uMsg, int wParam, string lParam);
        private void button6_Click(object sender, EventArgs e)
        {        

            Process[] notepads = Process.GetProcessesByName("notepad");
            if (notepads.Length == 0)
            {
                Process.Start(@"notepad.exe");
                Thread.Sleep(100);
            }
            notepads = Process.GetProcessesByName("notepad");
               // return;
            if (notepads[0] != null)
            {
                IntPtr child = FindWindowEx(notepads[0].MainWindowHandle, new IntPtr(0), "Edit", null);
                SendMessage(child, 0x000C, 0, "Hello");
            }              

        }
于 2013-08-27T12:23:25.570 回答
0

如果您希望用户为文件提供文本,则构建一个带有单个文本框的 Windows 窗体。让用户输入他们想要的任何内容,完成后,执行以下操作:

File.WriteAllText(pathToFile, textBox.Text);
于 2013-08-27T12:21:28.093 回答