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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excel VBA ユーザーフォーム内のラベルにテキストボックスの小計を出す方法 5 2022/08/17 14:27
- Access(アクセス) docmd.gotorecordを起動するには 5 2022/06/17 15:20
- Visual Basic(VBA) ExcelVBAでユーザーフォームでテキストボックスなどからセルに連続して入力するコーディングの際の 2 2022/06/29 22:51
- Visual Basic(VBA) エクセルVBAで以下のようなコードを書いたらエラーになりました。何処が間違っているの教えて? 1 2023/02/10 18:30
- Access(アクセス) Access IF文でテーブルに存在しない場合の処理について 2 2022/10/10 18:09
- Excel(エクセル) エクセルの数式について教えて下さい。 8 2023/05/27 12:17
- Visual Basic(VBA) 検索のユーザーフォームの表示について 1 2023/03/27 23:31
- Access(アクセス) アクセス IDが空白の時、メッセージボックスがでるようにするには 1 2022/08/04 11:06
- Visual Basic(VBA) ユーザーフォームで銀行に対応した支店コードの入力ができません Sheet1のA列に銀行名、B列に銀行 5 2022/07/28 17:50
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBA 別のブックのユ...
-
unityでクイズゲームを作ってい...
-
HTTPリクエストヘッダーの設定...
-
オートマトンNFAからDFAへの変換
-
プログラミング開発の質問です...
-
Accessの画面更新を一時的に停...
-
HTMLボタンの文字色を変え...
-
DragEnterイベントについて(VS...
-
JSPでボタンを押したら、文字が...
-
実行時にコントロールのイベン...
-
VBAで一時中断したプログラムの...
-
会社への勤怠届出にGoogleフォ...
-
フォーム認証でのパスワードロック
-
asp.NET初心者です。「 ’Contex...
-
INPUTにnameがない場合のsubmit
-
submitボタンにvalue属性の値で...
-
getParameterで値が取得できず...
-
青い枠のみのHTML
-
JavaのWebFrameworkは何がおす...
-
戻ると、記入フォームの内容が...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
画面遷移が不正ですと表示されます
-
ASPで画面間のパラメタ受け渡し
-
HTTPリクエストヘッダーの設定...
-
【ASP.NET】ページ遷移してもGr...
-
エクセルVBA 別のブックのユ...
-
オートマトンNFAからDFAへの変換
-
スマホで、左右にスワイプして...
-
セッション変数への値の代入方...
-
ASP.NET による画面遷移で質問...
-
【ASP.net】リンク押下時に次の...
-
VB.NET 画面遷移
-
java scriptはseo的には影響な...
-
PowerPointのボタンにマクロ設定
-
request.QueryStringについて
-
POSTだけして、ページの移動を...
-
Access2013 VBA 複数の画面の遷移
-
unityでクイズゲームを作ってい...
-
VB.NETのWebアプリケーション開...
-
ASPとASP.netの連携について
-
Request Header の追加
おすすめ情報
お返事ありがとうございます。
具体的実装といいますとソースのことですか?
validationのイベントに
try(整数変換
errorprovider(〜)):
catch(exception)
e.cancel=true:
errorprovider(〜)):
ざっくりこんなかんじです。
ちなみに、トラックバーとバインディングしていないところはこれで制御できています。