![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
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ランキング
-
ASPで画面間のパラメタ受け渡し
-
HTTPリクエストヘッダーの設定...
-
セッション変数への値の代入方...
-
ASP.NET による画面遷移で質問...
-
VB.NET 画面遷移
-
WebBrowserのドラッグできるフ...
-
オートマトンNFAからDFAへの変換
-
POSTだけして、ページの移動を...
-
c# 文字列の最後から1文字削除...
-
NumericUpDownコントロールでの...
-
コネクション・セッション・ト...
-
VBAで一時中断したプログラムの...
-
asp.NET初心者です。「 ’Contex...
-
Javascriptでページ内容全体を...
-
複数選択のListBoxでClickイベ...
-
DataGridViewのチェックボック...
-
ACCESS2010 WEBブラウザーコン...
-
<FORM> </FORM> の中に さらに...
-
Accessの画面更新を一時的に停...
-
テキストボックスのクリックで...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
先程、携帯でネットをしていた...
-
ASPで画面間のパラメタ受け渡し
-
画面遷移が不正ですと表示されます
-
HTTPリクエストヘッダーの設定...
-
スマホで、左右にスワイプして...
-
エクセルVBA 別のブックのユ...
-
オートマトンNFAからDFAへの変換
-
【ASP.NET】ページ遷移してもGr...
-
VBAで画面遷移時のパラメータに...
-
JK-FFを用いた順序回路の作成方法
-
動的に作成したボタン(リンク...
-
javascriptの質問です
-
"ビジョ"というソフトウェア
-
画面遷移なしでURL変更?
-
VB.NET 画面遷移
-
セッション変数への値の代入方...
-
Cookie認証 方法
-
自動ページ遷移について
-
Spreadのデータを別画面に引き渡す
-
server.transferで別のサイトへ
おすすめ情報
お返事ありがとうございます。
具体的実装といいますとソースのことですか?
validationのイベントに
try(整数変換
errorprovider(〜)):
catch(exception)
e.cancel=true:
errorprovider(〜)):
ざっくりこんなかんじです。
ちなみに、トラックバーとバインディングしていないところはこれで制御できています。