在windows应用程序中创建一个文本文件

问题描述:

我想打开一个文本文件并将一些数据写入文件。 这里是我的代码:在windows应用程序中创建一个文本文件

 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"); 

此代码的工作fine.But在这里第一次将文件保存得到。 我想要一个文本文件随数据一起打开并让用户保存文本文件。 这可能吗?

+2

你什么意思,你想用文本文件打开沿数据? –

+1

@neoistheone我认为OP希望记事本弹出并输入文本,但尚未保存。 – ispiro

+0

对不起,我的意思是在文本文件里写一些文字。 – Priyanka

尝试,这将解决您的问题

 [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"); 
      }    

     } 
+0

@Priyanka:这对你有用吗? – Sumeshk

+0

使用这一行,它只会要求用户第一次保存它。一旦文件在D:驱动器上创建,它就会直接打开它。我想每次打开一个新的未保存文本文件。并将一些数据写入它以编程方式。 – Priyanka

+0

@Priyanka:你可以打开记事本的一个实例,获得窗口的句柄,然后直接写入文本到那里。您将需要使用Windows用户API来执行此操作。 – Sumeshk

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

如果是这样,您可以使用Process类启动记事本。一旦你这样做,你can fire a series of keyboard events(模仿键),让你有文字。

这就是说,我认为可能是一个更清洁的解决方案将打开一个单独的窗体与文本区域/文本框,以便用户可以通读。然后,有一个名为Save的按钮,它基本上做你已经做的事情。

如果您希望用户为该文件提供文本,请使用单个文本框构建Windows窗体。让任何他们想要的用户类型,当你做,这样做:

File.WriteAllText(pathToFile, textBox.Text);