プロが教えるわが家の防犯対策術!

VB.NETで最近プログラムを作り始めました。
テキストボックスより255色の色を入力するように作ったのですが、0以下と256以上の数値を入力するとエラーが出てしまいます。
入力者が256以上の数値及び0以下の数値を入力した時に、256以上の場合255色に、0以下の場合0に強制的に数値を変更させて、エラーが出ないようにする方法を教えて下さい。
作成したプログラムは以下の通りです。(ラジオボタンで塗りつぶす場所を変更しています)
Dim grph As System.Drawing.Graphics = Me.CreateGraphics
Dim fillbrush As New SolidBrush(Color.FromArgb(R, G, B))
Dim drawpen As New Pen(Color.Blue, 3)
If RButMimi.Checked Then
grph.FillRectangle(fillbrush, 耳B1, 耳B2, 耳3, 耳4)
grph.FillRectangle(fillbrush, 耳A1, 耳A2, 耳3, 耳4)
ElseIf RButMe.Checked Then
grph.FillRectangle(fillbrush, 目A1, 目A2, 目3, 目4)
grph.FillRectangle(fillbrush, 目B1, 目B2, 目3, 目4)
ElseIf RButKao.Checked Then
grph.FillRectangle(fillbrush, 縦, 横, 横幅, 縦幅)
End If

A 回答 (4件)

Public Event???



普通じゃないですか?私ヘンな事言ってるかな?

Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
If TextBox1.Text.Length > 0 Then
TextBox1.Text = Math.Min(Math.Max(Val(TextBox1.Text), 1), 255)
End If
End Sub

でいけましたよ。
すみません。前回のコードに一部ミスありました。
0を許可しちゃってましたね。
あ。あとValueChangedじゃなくてTextChangedでした。
    • good
    • 0
この回答へのお礼

>普通じゃないですか?私ヘンな事言ってるかな?
いいえ。私がプログラムをよく理解していないので、変な事を言ってます。
すみませんでした。

教えて頂いたコードを利用して、プログラムが思った通りの結果になるよになりました。
まだまだ宣言や、宣言する場所等、基礎知識の勉強をしないと質問自体が分かりにくくなり、教えていただく方が分からない質問になってしまう事を痛感しました。変な質問に丁寧にご回答していただいて本当にありがとうございました。

お礼日時:2006/11/09 09:18

テキストボックスに数値をキーインしてもらうんですね?


NumericUpDownコントロールを使ってはいかがでしょうか?
キーインもできるし、数値しか入力できないし、何より入力する数値の範囲を指定できますので、範囲外の値を入れられることはあり得ません。

テキストボックスにするなら、
ValueChangedイベント(?)で
~.Text = Math.Min(Math.Max(Val(~.Text), 0), 255)
にしたら超えることはないかな。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
ValueChangedのイベントを試そうとやってみたんですが、
Public Eventで書いていいのかPrivate Eventで書いていいのか良く分からず、
とりあえず参考資料に載っていたPublic Eventで書いてみたのですが、
「~.Text」の所をテキストボックス名で書くと、「宣言されていません」
と表示されてしまいます。どう宣言したら良いのか教えて頂けますか?
こんな初歩的な質問ですみません。

自分の知らない方法を教えて貰ったので、とても勉強になります。

お礼日時:2006/11/08 16:02

>入力直後にエラーが表示されてしまい


ということは質問文に書いてあるコードはテキストボックスを
ハンドルとするイベント内に既に書かれているんですね?
上記コードがどのイベントか分からないとなんともいえません。

でも、とりあえず問題を回避するには
4行目、「If RButMimi.Checked Then」の直前にでも
IF TextBox1.text < 0 or TextBox1.text > 255 Then
exit sub 'SubかFunctionか分からないけどとにかく処理を中断する
end if
としておいたらどうでしょう?
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
お礼が遅くなってすみません。
アドバイスして頂いた事を参考にやっと動くようになりました。
本当にありがとうございます!
何とか思った通り、255以上の時にはエラーメッセージと255の数値
に変更される設定が使えるようになりました。
表示が255にならない所は次の課題ですが(^^;
本当にありがとうございました。助かりました。

お礼日時:2006/11/08 15:53

テキストボックスのLostForcusイベントで


入力されている値が256以上の場合255色に、
0以下の場合0に書き換えてやればいいと思われます。

この回答への補足

回答ありがとうございます。
IF文で書き換えるように書いたのですが、デバッグで確認すると入力直後に
エラーが表示されてしまい、書き換えが実行されていないようです。
どの部分にどのように書き換えのプログラムを入れればいいのか教えていただけますでしょうか?

補足日時:2006/11/07 15:57
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!