
C#でテキストボックスとスクロールバーをバインディングしていて、更にエラープロバイダーをセットしエラーメッセージが出るようになっていてe.cancel=trueを書いています。
やりたいことは、テキストボックス空欄でタブを押下したときにエラーメッセージがでてe.cancel=trueが反応し動作できなくなることです。
現在、テキストボックス空欄でタブを押したときにエラーメッセージは出ますがe.cancel=trueが反応せず、テキストボックス内が空欄→0になり進んでしまいます。
ちなみにバインディングしているスクロールバーの最小値は0に設定しています。
是非ともご教授お願いします(._.)
No.3ベストアンサー
- 回答日時:
通常、TextBox内でTabを押下した時、次のコントロールへフォーカスが遷移しますが、遷移しない場合もあります。
(次のコントロールとして認識されるものがない場合もあり得る)
そのため、Tabの制御をValidatingイベントで実装することは非現実的です。
Tab制御を問題視しているのか、Validatingイベントの制御を問題視しているのかがよくわかりません。
以下のようにした場合、フォーカス遷移が行われる際に必ずキャンセルされます。
それはTabキー押下に限った話ではありません。
private void textBox1_Validating(object sender, CancelEventArgs e)
{
errorProvider1.SetError(textBox1, "hoge");
e.Cancel = true;
}
Tabキーの話をしているのならば、PreviewKeyDownイベントで実装し、Tabを入力キーとしてしまって、フォーカス遷移を行わないようにできます。
が、TabがWindowsの仕様と異なることになります。
当たり前ですが、色々制御した結果、ヨシとした場合、それによってフォーカスが遷移するならば、Validatingイベントも走行しますので。
private void textBox1_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
{
if (e.KeyCode == Keys.Tab)
{
errorProvider1.SetError(textBox1, "hoge");
e.IsInputKey = true;
}
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VB.NET 画面遷移
-
ASP.NET による画面遷移で質問...
-
VBAで一時中断したプログラムの...
-
コンピュータへの接続数が最大...
-
DVD-Rの「セッションを閉じる」...
-
getParameterで値が取得できず...
-
aspxをhtmlに変換する方法について
-
VBAで特定のテキストボックスを...
-
Accessの画面更新を一時的に停...
-
ボタンのなかに表示する文字を...
-
コネクション・セッション・ト...
-
ACCESS2010 WEBブラウザーコン...
-
ひとつの検索窓で複数の検索サ...
-
asp.NET初心者です。「 ’Contex...
-
UWSC
-
Webブラウザの閉じるボタン無効...
-
SPREADでカーソルの位置を1行目...
-
エクセルVBAで画面の大きさを取...
-
JSPでメッセージボックスを表示...
-
VBのこのコードの意味を教えて...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
画面遷移が不正ですと表示されます
-
HTTPリクエストヘッダーの設定...
-
ASPで画面間のパラメタ受け渡し
-
【ASP.NET】ページ遷移してもGr...
-
ASP.NET による画面遷移で質問...
-
自動ページ遷移について
-
VB.NET 画面遷移
-
Spreadのデータを別画面に引き渡す
-
オートマトンNFAからDFAへの変換
-
request.QueryStringについて
-
VB.NETのWebアプリケーション開...
-
C#でテキストボックスとスクロ...
-
ページ遷移方法について
-
シングルサインオンの方法
-
"ビジョ"というソフトウェア
-
スマホで、左右にスワイプして...
-
javascriptの質問です
-
アプリの不具合?
-
性の悩み「カテゴリ」について
-
違うサイトに移動した時にcooki...
おすすめ情報
お返事ありがとうございます。
具体的実装といいますとソースのことですか?
validationのイベントに
try(整数変換
errorprovider(〜)):
catch(exception)
e.cancel=true:
errorprovider(〜)):
ざっくりこんなかんじです。
ちなみに、トラックバーとバインディングしていないところはこれで制御できています。