Как открыть текст в блокноте из .NET? - PullRequest
20 голосов
/ 30 сентября 2011

Когда я нажимаю кнопку в форме Windows Forms , я хотел бы открыть окно Блокнота, содержащее текст из элемента управления TextBox в форме.

Как это сделать

Ответы [ 3 ]

43 голосов
/ 30 сентября 2011

Попробуйте это:

System.IO.File.WriteAllText(@"C:\test.txt", textBox.Text);
System.Diagnostics.Process.Start(@"C:\test.txt");
39 голосов
/ 12 января 2013

Вам не нужно создавать файл с этой строкой.Вы можете использовать P / Invoke для решения вашей проблемы.

Использование класса NotepadHelper:

NotepadHelper.ShowMessage("My message...", "My Title");

NotepadHelper код класса:

using System;
using System.Runtime.InteropServices;
using System.Diagnostics;

namespace Notepad
{
    public static class NotepadHelper
    {
        [DllImport("user32.dll", EntryPoint = "SetWindowText")]
        private static extern int SetWindowText(IntPtr hWnd, string text);

        [DllImport("user32.dll", EntryPoint = "FindWindowEx")]
        private static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow);

        [DllImport("User32.dll", EntryPoint = "SendMessage")]
        private static extern int SendMessage(IntPtr hWnd, int uMsg, int wParam, string lParam);

        public static void ShowMessage(string message = null, string title = null)
        {
            Process notepad = Process.Start(new ProcessStartInfo("notepad.exe"));
            if (notepad != null)
            {
                notepad.WaitForInputIdle();

                if (!string.IsNullOrEmpty(title))
                    SetWindowText(notepad.MainWindowHandle, title);

                if (!string.IsNullOrEmpty(message))
                {
                    IntPtr child = FindWindowEx(notepad.MainWindowHandle, new IntPtr(0), "Edit", null);
                    SendMessage(child, 0x000C, 0, message);
                }
            }
        }
    }
}

Ссылки (pinvoke.net и msdn.microsoft.com):

SetWindowText: pinvoke | msdn

FindWindowEx: pinvoke | msdn

SendMessage: pinvoke | 1033 * MSDN *

7 голосов
/ 30 сентября 2011

Сохраните файл на диск, используя File.WriteAllText:

File.WriteAllText("path to text file", myTextBox.Text);

Затем используйте Process.Start, чтобы открыть его в блокноте:

Process.Start("path to notepad.exe", "path to text file");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...