textbox cursorposition, Anzahl von Zeichen in einer Zeile

21/06/2010 - 00:05 von Daniel Zuidinga | Report spam
Hallo NG,

ich möchte in einer Textbox mit einem Shortcut (zB Strg+D) alle Zeichen
hinter der Cursorposition in der jeweiligen Zeile löschen. Wie kann man
so etwas implementieren? Zur Not kann ich auch ne RichTextBox verwenden.

Gruß
Daniel
 

Lesen sie die antworten

#1 Daniel Zuidinga
21/06/2010 - 00:22 | Warnen spam
Am 21.06.2010 00:05, schrieb Daniel Zuidinga:
Hallo NG,

ich möchte in einer Textbox mit einem Shortcut (zB Strg+D) alle Zeichen
hinter der Cursorposition in der jeweiligen Zeile löschen. Wie kann man
so etwas implementieren? Zur Not kann ich auch ne RichTextBox verwenden.

Gruß
Daniel


hab ne Lösung gefunden:

private void richTextBox1_KeyDown(object sender, KeyEventArgs e)
{

if (e.Control && e.KeyCode == Keys.D)
{
int ColIndex;
int RowIndex;
int RowStartIndex;

RowIndex =
richTextBox1.GetLineFromCharIndex(richTextBox1.SelectionStart) ;
Console.WriteLine("Row: " + RowIndex.ToString());


richTextBox1.GetCharIndexFromPosition(richTextBox1.GetPositionFromCharIndex(richTextBox1.SelectionStart));
RowStartIndex = Win32.SendMessage(richTextBox1.Handle,
Win32.EM_LINEINDEX, -1, 0);
ColIndex = richTextBox1.SelectionStart - RowStartIndex ;
Console.WriteLine("Col:" + ColIndex.ToString());

string[] lines = richTextBox1.Lines;
lines[RowIndex] = lines[RowIndex].Remove(ColIndex,
richTextBox1.Lines[RowIndex].Length - ColIndex);
richTextBox1.Lines = lines;
richTextBox1.SelectionStart = RowStartIndex + ColIndex;

}
}

public class Win32
{
public Win32()
{
//
// TODO: Add constructor logic here
//
}
[DllImport("User32.Dll")]
public static extern int SendMessage(IntPtr hWnd, int Msg,
int wParam, int lParam);
public const int EM_LINEINDEX = 0xBB;
}

Ähnliche fragen