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
No.2ベストアンサー
- 回答日時:
>入力直後にエラーが表示されてしまい
ということは質問文に書いてあるコードはテキストボックスを
ハンドルとするイベント内に既に書かれているんですね?
上記コードがどのイベントか分からないとなんともいえません。
でも、とりあえず問題を回避するには
4行目、「If RButMimi.Checked Then」の直前にでも
IF TextBox1.text < 0 or TextBox1.text > 255 Then
exit sub 'SubかFunctionか分からないけどとにかく処理を中断する
end if
としておいたらどうでしょう?
ご回答ありがとうございます。
お礼が遅くなってすみません。
アドバイスして頂いた事を参考にやっと動くようになりました。
本当にありがとうございます!
何とか思った通り、255以上の時にはエラーメッセージと255の数値
に変更される設定が使えるようになりました。
表示が255にならない所は次の課題ですが(^^;
本当にありがとうございました。助かりました。
No.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でした。
>普通じゃないですか?私ヘンな事言ってるかな?
いいえ。私がプログラムをよく理解していないので、変な事を言ってます。
すみませんでした。
教えて頂いたコードを利用して、プログラムが思った通りの結果になるよになりました。
まだまだ宣言や、宣言する場所等、基礎知識の勉強をしないと質問自体が分かりにくくなり、教えていただく方が分からない質問になってしまう事を痛感しました。変な質問に丁寧にご回答していただいて本当にありがとうございました。
No.3
- 回答日時:
テキストボックスに数値をキーインしてもらうんですね?
NumericUpDownコントロールを使ってはいかがでしょうか?
キーインもできるし、数値しか入力できないし、何より入力する数値の範囲を指定できますので、範囲外の値を入れられることはあり得ません。
テキストボックスにするなら、
ValueChangedイベント(?)で
~.Text = Math.Min(Math.Max(Val(~.Text), 0), 255)
にしたら超えることはないかな。
ご回答ありがとうございます。
ValueChangedのイベントを試そうとやってみたんですが、
Public Eventで書いていいのかPrivate Eventで書いていいのか良く分からず、
とりあえず参考資料に載っていたPublic Eventで書いてみたのですが、
「~.Text」の所をテキストボックス名で書くと、「宣言されていません」
と表示されてしまいます。どう宣言したら良いのか教えて頂けますか?
こんな初歩的な質問ですみません。
自分の知らない方法を教えて貰ったので、とても勉強になります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) ExcelのIF関数について 4 2023/05/24 12:54
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- Excel(エクセル) VBAで組み合わせ算出やCOUNTIFSの処理を高速化したいです。 4 2022/04/07 02:38
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
- Visual Basic(VBA) フォルダの場所を可変にしたいです(マクロ) 4 2023/05/11 10:00
- Excel(エクセル) Excelのマクロについて 2 2022/06/14 03:38
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コンボボックスからテキストボ...
-
VBAのフォーム カーソル移動
-
visual basic初心者です。 visu...
-
VB2010 TextBoxの数字の表示...
-
エクセルVBAでテキストボッ...
-
VBでローマ字入力とかな入力を...
-
アクセスできない保護レベルエ...
-
タイムアウトする仕組みを作りたい
-
VBAでcallで呼び出したsubを終...
-
【VB6.0】 あるフォームから他...
-
他のフォームから別のフォーム...
-
キャッシュを無効に
-
Excel VBA: private sub 内の...
-
HTML + VBScript で Sleep でき...
-
共有フォルダの「共有のアクセ...
-
VB.netである関数を呼んで、そ...
-
Matlabでsin波を使って矩形波を...
-
VBA public変数はどのようなこ...
-
[Excel2000]auto_closeを止めさ...
-
Excel VBA カーソルを当てた際...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBAでテキストボッ...
-
アクセスできない保護レベルエ...
-
VBAで入力数値について
-
visual basic初心者です。 visu...
-
Excel ユーザーフォームで計算 ...
-
ユーザーフォームへのデータ入...
-
【VB.NET】テキストボックスに...
-
テキストボックスを空白にする方法
-
テキストボックスに大文字を
-
コンボボックスからテキストボ...
-
VB2005テキストボックスへのコ...
-
VBでローマ字入力とかな入力を...
-
VBでの入力値制限について
-
VBAのフォーム カーソル移動
-
TextBoxの内容を右寄せ
-
整数かどうかチェックする
-
Vba テキストボックスの文字列...
-
TEXTBOXの表示形式の変...
-
ACCESS 除算での小数点切上げ方法
-
VBSのプログラム
おすすめ情報