C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

if文を使って


(過去ログ 6 を表示中)

[トピック内 14 記事 (1 - 14 表示)]  << 0 >>

■6146 / inTopicNo.1)  if文を使って
  
□投稿者/ まみ 二等兵(1回)-(2006/08/30(Wed) 15:32:47)

分類:[VB.NET] 


分類:[VB.NET] 

はじめまして。
vb.net vs2003で簡単なプログラミングをしています。

少しお聞きしたいのですが、以下の事柄をif文を使って最もシンプルに
記述しようとするとどういった記述になるか、お聞かせ願えますか;?

             
               内容
textboxが1〜5まであり、
textbox内に半角数字以外の文字が入力されたり、
textboxに何も文字が入力されていなかったりすると、

MessageBox.Show("検索項目に半角数字で入力して下さい。", "エラー")

という処理が行われるようにしたいのですが・・・

バカですみません(;;)お願いします。

0
引用返信 編集キー/
■6147 / inTopicNo.2)  Re[1]: if文を使って
□投稿者/ 名無しぃシャープ 中尉(141回)-(2006/08/30(Wed) 16:19:02)

分類:[VB.NET] 

No6146に返信(まみさんの記事)
> textboxが1〜5まであり、
> textbox内に半角数字以外の文字が入力されたり、
> textboxに何も文字が入力されていなかったりすると、
>
> MessageBox.Show("検索項目に半角数字で入力して下さい。", "エラー")
>
> という処理が行われるようにしたいのですが・・・

そういう検証メソッドを用意して5回渡せばいいんでないの?

if(!IsValidHogeHoge(this.textBox1.Text)) {
MessageBox.Show("検索項目に半角数字で入力して下さい。", "エラー")
return false;
}

if(!IsValidHogeHoge(this.textBox2.Text)) {
MessageBox.Show("検索項目に半角数字で入力して下さい。", "エラー")
return false;
}




> バカですみません(;;)お願いします。

最初にできない人=バカとは限らんです。


0
引用返信 編集キー/
■6148 / inTopicNo.3)  Re[2]: if文を使って
□投稿者/ まみ 二等兵(2回)-(2006/08/30(Wed) 17:07:54)

分類:[VB.NET] 

No6147に返信(名無しぃシャープさんの記事)

返信ありがとうございます^^

> そういう検証メソッドを用意して5回渡せばいいんでないの?
>
> if(!IsValidHogeHoge(this.textBox1.Text)) {
> MessageBox.Show("検索項目に半角数字で入力して下さい。", "エラー")
> return false;
> }
>
> if(!IsValidHogeHoge(this.textBox2.Text)) {
> MessageBox.Show("検索項目に半角数字で入力して下さい。", "エラー")
> return false;
> }
>
> :
> :

 ! や { は何かの言語の書き方ですか?
知らなさ過ぎてすみません。
やっぱり数行ダーッとかかなきゃいけないんですね。
ムシのいいこと考えてました(^^;) 挑戦してみます。



0
引用返信 編集キー/
■6149 / inTopicNo.4)  Re[3]: if文を使って
□投稿者/ 名無しぃシャープ 中尉(142回)-(2006/08/30(Wed) 17:19:33)

分類:[VB.NET] 

No6148に返信(まみさんの記事)
>  ! や { は何かの言語の書き方ですか?
> 知らなさ過ぎてすみません。

あーごめん、C#で書いちゃった。VBだったね。
VBに直すとこうなる。

If Not IsValidHogeHoge(Me.TextBox1.Text) Then
MessageBox.Show("検索項目に半角数字で入力して下さい。", "エラー")
Return False
End If

If Not IsValidHogeHoge(Me.TextBox2.Text) Then
MessageBox.Show("検索項目に半角数字で入力して下さい。", "エラー")
Return False;
End If

IsValidHogeHogeというメソッドの中でやりたいことをやるんだ。


0
引用返信 編集キー/
■6152 / inTopicNo.5)  Re[4]: if文を使って
□投稿者/ eternia 二等兵(13回)-(2006/08/30(Wed) 17:48:30)

分類:[VB.NET] 

> やっぱり数行ダーッとかかなきゃいけないんですね。
> ムシのいいこと考えてました(^^;)

↑ってループで回してできないかってことでしょうか?
Controlsプロパティを使えばできなくはないですが……。


0
引用返信 編集キー/
■6153 / inTopicNo.6)  Re[5]: if文を使って
□投稿者/ ゆうじ 伍長(43回)-(2006/08/30(Wed) 18:05:20)

分類:[VB.NET] 

「最もシンプルに」の定義があいまいですね。
私のシンプルのイメージは、同じ処理を同一イベントにまとめる感じです。
具体的には、下記のような感じです。
(ごめんなさい。動作確認してません。)
「if文を使って」を無視してしまっていますが・・・。

'フォームロードイベント
Private Sub MainForm_Load( _
ByVal sender As Object, _
ByVal e As System.EventArgs _
) Handles Me.Load

'イベント ハンドラの関連付け
AddHandler txt1.Validated, AddressOf Text_Validated
AddHandler txt2.Validated, AddressOf Text_Validated



AddHandler txt5.Validated, AddressOf Text_Validated

End Sub

'テキストボックスの検証終了時イベント
Private Sub Text_Validated( _
ByVal sender As Object, _
ByVal e As System.EventArgs _
)
Dim txt As TextBox = DirectCast(sender, TextBox)

If txt.Text <> StrConv(txt, VbStrConv.Narrow) Then
MessageBox.Show("検索項目に半角で入力して下さい。", "エラー")

'その他の処理
End If

End Sub


0
引用返信 編集キー/
■6154 / inTopicNo.7)  Re[6]: if文を使って
□投稿者/ まみ 二等兵(4回)-(2006/08/30(Wed) 18:40:12)

分類:[VB.NET] 

>名無しぃシャープ 中尉(142回)-(2006/08/30(Wed) 17:19:33)

IsValidHogeHogeというメソッドはVBですか?
何回もすみません・・・



>投稿者/ eternia 二等兵(13回)-(2006/08/30(Wed) 17:48:30)

>Controlsプロパティを使えばできなくはないですが……。

・・・って何でしょうか?奥の手のようなものですか!?


No6153に返信(ゆうじさんの記事)
> 「最もシンプルに」の定義があいまいですね。
> 私のシンプルのイメージは、同じ処理を同一イベントにまとめる感じです。
> 具体的には、下記のような感じです。
> (ごめんなさい。動作確認してません。)
> 「if文を使って」を無視してしまっていますが・・・。
>

すみません、確かに超あいまいでした。
ゆうじさんのイメージ通りの感じに仕上げたいです。

分かりやすく記述していただいて大変うれしいのですが、
ロードイベントのタイミングにて記述される?のがよくわかりません。

私のイメージでは

フォームロード
 ↓
テキストボックス(ID等)に入力される(たとえば全角数字)
 ↓
何かのボタン(たとえばデータ抽出ボタン)を押下する
 ↓
エラーメッセージ("検索項目に半角数字で入力して下さい。", "エラー")

なので、ボタンを押下した時に処理の記述をするのかと・・・


0
引用返信 編集キー/
■6155 / inTopicNo.8)  Re[7]: if文を使って
□投稿者/ 名無しぃシャープ 中尉(143回)-(2006/08/30(Wed) 18:47:53)

分類:[VB.NET] 

ちょっと質問をしてくるような段階じゃないね。
書籍をひとつ購入して読んでから出直した方がいいと思うよ。

0
引用返信 編集キー/
■6156 / inTopicNo.9)  Re[8]: if文を使って
□投稿者/ まみ 二等兵(5回)-(2006/08/30(Wed) 19:01:51)

分類:[VB.NET] 

No6155に返信(名無しぃシャープさんの記事)

> ちょっと質問をしてくるような段階じゃないね。
> 書籍をひとつ購入して読んでから出直した方がいいと思うよ。

一生懸命べんきょうしますっ(><)
お時間割いてていただきありがとうございました。

0
引用返信 編集キー/
■6157 / inTopicNo.10)  Re[9]: if文を使って
□投稿者/ eternia 二等兵(14回)-(2006/08/30(Wed) 21:12:10)

分類:[VB.NET] 

>・・・って何でしょうか?奥の手のようなものですか!?
奥の手……ではないですね(笑)

フォーム上にあるコントロールの情報が入っているところです。
下記のような感じでやるとループで書くことができます。

For i = 0 To Me.Controls.Count - 1

If Me.Controls(i).GetType Is GetType(TextBox) Then

'検証ロジック

End If

Next

自分はシンプルの意味をぱっと見わかりやすいものと捉えていたので
そういう意味では名無しぃシャープさんのほうがわかりやすいかなーって気もしますが^^;

>一生懸命べんきょうしますっ(><)
とのことですので今出ている例が全て理解できるよう頑張ってください^^




0
引用返信 編集キー/
■6160 / inTopicNo.11)  Re[10]: if文を使って
□投稿者/ ひろえむ 二等兵(8回)-(2006/08/31(Thu) 00:29:49)

分類:[VB.NET] 

2006/08/31(Thu) 00:40:33 編集(投稿者)



VB.NETですよね? AddHandleする方法もありますが、もっと単純に

Private Sub TextBox1_Validating(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) _
Handles _
TextBox1.Validating, _
TextBox2.Validating, _
TextBox3.Validating, _
TextBox4.Validating, _
TextBox5.Validating

という感じで、Handlesの後ろに複数のイベントを指定するだけで1メソッドでできると思いますよ。

TextBoxの内容は

Dim tbxTarget As TextBox = CType(sender, TextBox)

というように内容をキャストしてやれば、同じチェックがまとめて出来ると思いますよ。

ついでに、ソースをまとめると・・・

Private Sub TextBox1_Validating(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) _
Handles _
TextBox1.Validating, _
TextBox2.Validating, _
TextBox3.Validating, _
TextBox4.Validating, _
TextBox5.Validating
Dim tbxTarget As TextBox = CType(sender, TextBox)
If IsValidHoge(tbxTarget.Text) Then
MessageBox.Show(String.Format("{0}がエラーです", tbxTarget.Name), "Error")
End If
End Sub

こんな感じでしょうか・・・。

0
引用返信 編集キー/
■6162 / inTopicNo.12)  Re[11]: if文を使って
□投稿者/ 中博俊 神(699回)-(2006/08/31(Thu) 00:35:18)
中博俊 さんの Web サイト

分類:[VB.NET] 

だれもUCには触れないのね・・・(^^
継承してOnValidatingを書いてやれば各フォーム側はノーコーディングです。

0
引用返信 編集キー/
■6164 / inTopicNo.13)  Re[12]: if文を使って
□投稿者/ ひろえむ 二等兵(10回)-(2006/08/31(Thu) 00:44:22)

分類:[VB.NET] 

No6162に返信(中博俊さんの記事)
> だれもUCには触れないのね・・・(^^
> 継承してOnValidatingを書いてやれば各フォーム側はノーコーディングです。

利用頻度にもよりますねー(^^)

0
引用返信 編集キー/
■6167 / inTopicNo.14)  Re[13]: if文を使って
□投稿者/ まみ 二等兵(6回)-(2006/08/31(Thu) 08:54:59)

分類:[VB.NET] 

みなさん、返信ありがとうございます。
みなさんに教えていただいたことについて今日は
理解をしたいと思います(継承・・・聞いたことありますレベル(苦笑))。

ありがとうございました(><)!


解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -