0
一度検証テキストボックスのテキストとTextChangedイベントに...こんにちは私は私のコードが間違っている場合知っているが、それを修正する方法がわからない
をタブインデックスを増やし、私はありません、私の検証関数を呼び出します唯一
- が
- 以外の文字の文字を削除大文字
- に入力された文字を変換し、次の(行うことになっています)
問題がテキスト変更イベントになっているので、私はそれを2回タビングするのを防ぐために戦おうとしています。最初に入力した文字が最初のtextchangedイベントであるため、それがnotallowed文字の場合は関数が再度呼び出されますが、文字の場合はToUpperが再び変更してタブが2回送られることがあります。何か案は?私の代わりにTABのキーの押下をシミュレートするためのSendKeysを使用して、あなたがタブ順序に次の表示制御を見つけ、に焦点を当てて呼び出すことができます
private void validateTextInteger(object sender, EventArgs e)
{
TextBox T = (TextBox)sender;
try
{
//Not Allowing Numbers, Underscore or Hash
char[] UnallowedCharacters = { '0', '1','2', '3', '4', '5','6', '7','8', '9','_','#','%','$','@','!','&',
'(',')','{','}','[',']',':','<','>','?','/','=','-','+','\\','|','`','~',';'};
if (textContainsUnallowedCharacter(T.Text, UnallowedCharacters))
{
int CursorIndex = T.SelectionStart - 1;
T.Text = T.Text.Remove(CursorIndex, 1);
//Align Cursor to same index
T.SelectionStart = CursorIndex;
T.SelectionLength = 0;
}
}
catch (Exception) { }
T.Text = T.Text.ToUpper();
if (T.Text.Length > 0)
{
//how do i prevent this (or this function) from getting called twice???
SendKeys.Send("{TAB}");
}
}
と
SendKeys.Send("{TAB}");
を置き換え、このメソッドを呼び出すために、私は次のテキストボックスの名前を参照する方法がわかりません。関数から私は、送信者をテキストボックスとして受け入れ、それをコントロールとして参照しています。最初のテキストボックスが 'textbox1'ならば、私は現在の設定を使ってフォーカスを' textbox2'に変更する方法を知らないのです。 – ikathegreatフォームのタブ順で次のコントロールにフォーカスする方法を示すために、私は自分の答えを編集しました。フォームにグループボックスや他のコンテナコントロールがある場合は、これを考慮に入れて上記のコードを変更する必要があります。 –
muahahahaこれは完璧に動作します、ありがとう!!!!ビジネスに戻って.... – ikathegreat