特定の行のテキストを取得するために EM_GETLINE メッセージを使用しますが、2 回目に呼び出すと空の文字列が返されます。
このコードを実行し、button1 を 2 回クリックします。最初のクリックではテキストがメッセージ ボックスに表示されますが、2 回目ではメッセージ ボックスが空の状態で表示されます。
private void button1_Click(object sender, EventArgs e)
{
StringBuilder str = new StringBuilder(256);
SendMessage_Ex(richTextBox1.Handle, EM_GETLINE, 0, str);
MessageBox.Show(str.ToString());
}
public const int EM_GETLINE = 0xc4;
[DllImport("user32.dll", EntryPoint = "SendMessageA")]
public static extern int SendMessage_Ex(IntPtr hwnd, int wMsg, int wParam, StringBuilder lParam);