No wiec mam DataGridView a w nim komórki ze stringiem.
Chce zrobić tak żeby po wpisaniu dwóch znaków do komórki automatycznie zacząć edytować kolejną komórkę wiec mam taki kod(nic lepszego nie mogłem wymyślić):
private void HexValue_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
textedit = (TextBox)e.Control;
textedit.SelectionStart = 0;
textedit.KeyPress -= EditKeyPress;
textedit.KeyPress += EditKeyPress;
}
private void EditKeyPress(object sender, KeyPressEventArgs e)
{
if(checkKey(e.KeyChar))
{
textedit.SelectionStart = CurSelSta;
e.KeyChar = e.KeyChar.ToString().ToUpper()[0];
}else
{
e.Handled = true;
}
textBox1.Text = textedit.SelectionStart.ToString();
if (textedit.SelectionStart==2)
{
SendKeys.Send("{TAB}");
SendKeys.Send("{F2}");
}
}
checkKey(e.KeyChar) - sprawdza czy e.KeyChar jest literą od 'a' do 'f' lub cyfra od '0' od '9';
i podczas edycji wciśnięcie klawisza wywołuje EditKeyPress(..) ale jak sprawdzić aktualne położenie kursora?
textedit.SelectionStart
nie działa prawidłowo ponieważ jest (tak mi się wydaje) w złym miejscu(?)
po wpisaniu do komórki dwóch znaków pokazywało że jest na pozycji 1, po wpisaniu jednego znaku pokazywał ze jest na pozycji 0 a przed wpisaniem czegokolwiek pokazywał też 0;
Nie wiem też dlaczego
textedit.KeyPress -= EditKeyPress;
textedit.KeyPress += EditKeyPress;
musi być w tej kolejności(inaczej albo EditKeyPress nie wykonywało się albo wykonywało kilka krotnie)