DOBON.NET DOBON.NETプログラミング掲示板過去ログ

タブページのテキスト部分にエラープロバイダのアイコンを表示したい

環境/言語:[Windows7 Pro SP1 x64, VB.NET(2012 Express)]
分類:[.NET]

毎度お世話になっております。

WindowsApplicationでフォーム上にタブコントロールを配置しています。
ボタンをクリックしたタイミングでフォーム上にある入力項目の総チェックを行い、
入力に不備があるものについてエラープロバイダにて該当項目の入力不備をユーザに
通知しています。

どのタブページ上のコントロールに不備があるのかをユーザに通知するため、
タブページのテキスト部分(TabPage1.Textが表示されている部分)にエラーアイコンを
表示させたいのですが、何か方法はないでしょうか。
■No32011に返信(やむさんの記事)
> どのタブページ上のコントロールに不備があるのかをユーザに通知するため、
> タブページのテキスト部分(TabPage1.Textが表示されている部分)にエラーアイコンを
> 表示させたいのですが、何か方法はないでしょうか。
>
1) ImageListを配置して、画像登録。
2) TabControlのImageListプロパティに配置した"ImageList"を関連づけ。
3) TabPageのImage〜プロパティの切り替え
で似たようなことはできませんか?
■No32011に返信(やむさんの記事)
> タブページのテキスト部分(TabPage1.Textが表示されている部分)に

それを表示しているのは、TabControl の役目ですね。

タブ数が比較的少ない場合(スクロールや複数行タブが無い場合)は、
こんな方法があります。

errorProvider1.SetIconAlignment(tabControl1, ErrorIconAlignment.TopLeft);
errorProvider1.SetIconPadding(tabControl1, -tabControl1.GetTabRect(0).Right);
errorProvider1.SetError(tabControl1, "TabError1");

errorProvider2.SetIconAlignment(tabControl1, ErrorIconAlignment.TopLeft);
errorProvider2.SetIconPadding(tabControl1, -tabControl1.GetTabRect(1).Right);
errorProvider2.SetError(tabControl1, "TabError2");

errorProvider3.SetIconAlignment(tabControl1, ErrorIconAlignment.TopLeft);
errorProvider3.SetIconPadding(tabControl1, -tabControl1.GetTabRect(2).Right);
errorProvider3.SetError(tabControl1, "TabError3");
a 様、魔界の仮面弁士 様

回答いただきありがとうございます。
どちらの方法でも、やりたかったことが実現できました。
今回は、タブの数だけErrorProviderが必要になるということで、
条件によってタブの数が変動することが将来的に出てきそうということもあり
a様の方法で実装しようと思います。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板