Windows Forms formundaki bir düğmeyi tıklattığımda, formdaki bir TextBox denetiminden metni içeren bir Not Defteri penceresi açmak istiyorum..NET'ten Not Defteri'nde metin nasıl açılır?
Bunu nasıl yapabilirim?
Windows Forms formundaki bir düğmeyi tıklattığımda, formdaki bir TextBox denetiminden metni içeren bir Not Defteri penceresi açmak istiyorum..NET'ten Not Defteri'nde metin nasıl açılır?
Bunu nasıl yapabilirim?
bu deneyin:
System.IO.File.WriteAllText(@"C:\test.txt", textBox.Text);
System.Diagnostics.Process.Start(@"C:\test.txt");
kaydet File.WriteAllText
kullanarak diske dosya:
File.WriteAllText("path to text file", myTextBox.Text);
Sonra not defteri açmak için Process.Start
kullanın:
Process.Start("path to notepad.exe", "path to text file");
Cevabınız için çok teşekkür ederim. :) –
@Shredder - Sorunu anlamıyorum. Dosya not defterinde açık olduğunda, kilitlenecektir. – Oded
Cevabınızı böyle yazdığımda. string s = txtNum.Text; Process.Start ("notepad.exe", s); Bu metin sadece başlık görünür. Not Defteri'nde açılmaz. Yanlış mıyım? –
Değilsin Bu dizeyle dosya oluşturmaya ihtiyacım var. Sorununuzu çözmek için P/Invoke'u kullanabilirsiniz. NotepadHelper sınıfı
Kullanım:
NotepadHelper.ShowMessage("My message...", "My Title");
NotepadHelper
sınıf kodu:
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);
}
}
}
}
}
Kaynaklar (pinvoke.net ve msdn.microsoft.com):
Bu, işleri yapmanın çok daha temiz bir yoludur. Diskte çöp verisi bırakmaz. – Oybek
@kmatyaszek Referans bağlantılarınızın bozuk gibi görünüyor, ya da belki site kapalı? Mümkünse bunları güncellemeyi ister misiniz? –
@Shredder site pinvoke.net yayında ama msdn sitesine de referanslar ekledim. – kmatyaszek
Evet, kendi tercih edilen metin düzenleyicisine sahip bir kullanıcı üzerinde Not Defteri'ni zorlamayın. –
Senden cevap aldım. Teşekkürler. :) –
Birden fazla kullanıldıysa, dosya kendi üzerine yazılacak, bu yüzden çöp birikmesine yol açan yeni kopyalar yapmaya devam etmeyecektir. Bir sistem geçici klasöründe yolu yapın. –