質問編集履歴

1 内容の修正

退会済みユーザー

退会済みユーザー

2016/04/22 13:33  投稿

C# テキストボックスに入力する数値の範囲限定
C# テキストボックスに入力した数値の範囲限定
テキストボックスに数値を入力する際、入力できる数値の範囲を2~40というように限定したいのですが
どのようにしたらいいのでしょうか。
範囲を限定するといってもその数値以外入力できないというものではなくその数値以外は入力しても
何も起きないというようにしたいのですがそのやり方が分からないのでサンプルなど提示していただけると嬉しいのですが、教えていただけないでしょうか。
迷路を自動生成するものをつくっていて、縦と横の長さ、出入り口の数の数値を入力し
フォーム内に設置したボタンをクリックすると
その数値に応じた長さの線が描画されるようにしているのですが、その数値の範囲を限定させたいのです。
範囲の限定についてですが、
・入力する数値の最大最小を決めて、その範囲外の数字や文字が入力されても実行画面では反応はないようにしたい。
・範囲内の数値が入力されたときのみ応答がある。
・範囲は最小2から最大50まで、出入り口は最小2から最大4までを考えている。
以下は現在のコードです。
```     
private void CreateSoto()
       {
         
     private int tate;
       private int yoko;
       private int deiriguti;
       private int x_start;
       private int x_end;
       private int y_start;
       private int y_end;
       private Image _img;
           string s = this.textBox1.Text;
           string a = this.textBox2.Text;
           string d = this.textBox3.Text;
           int result;
           if (int.TryParse(s, out result))
           {
               tate = result;
           }
           if (int.TryParse(a, out result))
           {
               yoko = result;
           }
           if (int.TryParse(d, out result))
           {
               deiriguti = result;
           }
           //テキストボックス入力で枠線の値を変更
           float x_start = (yoko * 20);
           float y_start = (tate * 20);
           float y_end = (tate * 20) + 10;
           float x_end = (yoko * 20) + 10;
           // pictureboxのサイズを変更
           this.pictureBox1.Width = 10 + (int)x_end + 10;
           this.pictureBox1.Height = 10 + (int)y_end + 10;
           Bitmap bmp = new Bitmap(this.pictureBox1.Width, this.pictureBox1.Height);
           //ImageオブジェクトのGraphicsオブジェクトを作成する
           Graphics g = Graphics.FromImage(bmp);
           //出入り口の数を設定
           switch (deiriguti)
           {
               case 2:
                   //左の枠線
                   g.DrawLine(Black, 10, 30, 10, y_end);//x始点は固定
                   //右の枠線
                   g.DrawLine(Black, x_end, 10, x_end, y_end - 20);//y始点は固定
                   //上の枠線
                   g.DrawLine(Black, 10, 10, x_end, 10);//始点と終点yは固定
                   //下の枠線
                   g.DrawLine(Black, 10, y_end, x_end, y_end);
                   break;
               case 3:
                   //左の枠線
                   g.DrawLine(Black, 10, 30, 10, y_end);//x始点は固定
                   //右の枠線
                   g.DrawLine(Black, x_end, 10, x_end, y_end - 20);//y始点は固定
                   //上の枠線
                   g.DrawLine(Black, 10, 10, x_end - 20, 10);//始点と終点yは固定
                   //下の枠線
                   g.DrawLine(Black, 10, y_end, x_end, y_end);
                   break;
               case 4:
                   //左の枠線
                   g.DrawLine(Black, 10, 30, 10, y_end);//x始点は固定
                   //右の枠線
                   g.DrawLine(Black, x_end, 10, x_end, y_end - 20);//y始点は固定
                   //上の枠線
                   g.DrawLine(Black, 10, 10, x_end - 20, 10);//始点と終点yは固定
                   //下の枠線
                   g.DrawLine(Black, 30, y_end, x_end, y_end);
                   break;
           }
           //リソースを解放する
           g.Dispose();
           //PictureBox1に表示する
           pictureBox1.Image = bmp;
           _img = bmp;
       }
```
  • C#

    12544 questions

    C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

  • Visual Studio

    3368 questions

    Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る