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.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」の所をテキストボックス名で書くと、「宣言されていません」
と表示されてしまいます。どう宣言したら良いのか教えて頂けますか?
こんな初歩的な質問ですみません。
自分の知らない方法を教えて貰ったので、とても勉強になります。
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にならない所は次の課題ですが(^^;
本当にありがとうございました。助かりました。
お探しの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でテキストボッ...
-
TextBoxの内容を右寄せ
-
テキストボックスを空白にする方法
-
ACCESS 除算での小数点切上げ方法
-
ユーザーフォームへのデータ入...
-
整数かどうかチェックする
-
VBAで入力数値について
-
【VB.NET】テキストボックスに...
-
アクセスできない保護レベルエ...
-
VB2005テキストボックスへのコ...
-
テキストボックスにカーソルを...
-
INPUTタグのカンマ対策
-
コンボボックスからテキストボ...
-
Excel ユーザーフォームで計算 ...
-
【VB6.0】 あるフォームから他...
-
VBA public変数はどのようなこ...
-
VBAでcallで呼び出したsubを終...
-
C#のループでtextboxに値を入れ...
-
String型の値にスラッシュをつ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBAでテキストボッ...
-
アクセスできない保護レベルエ...
-
visual basic初心者です。 visu...
-
VBAで入力数値について
-
ユーザーフォームへのデータ入...
-
【VB.NET】テキストボックスに...
-
Excel ユーザーフォームで計算 ...
-
VBでの入力値制限について
-
ACCESS 除算での小数点切上げ方法
-
テキストボックスを空白にする方法
-
【C#】コンボボックスにおけるS...
-
TEXTBOXの表示形式の変...
-
visual studio 2008 C# で、値...
-
テキストボックス1の値に対する...
-
256色で任意の色を作成する時、...
-
VBAのフォーム カーソル移動
-
VBAのユーザーフォームで、テキ...
-
Vba 電卓のテキストボックスに...
-
VBSのプログラム
-
整数かどうかチェックする
おすすめ情報