質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.48%

  • C#

    7487questions

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

  • Visual Studio

    1924questions

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

C# テキストボックスに入力した数値の範囲限定

受付中

回答 3

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 3,353
退会済みユーザー

退会済みユーザー

迷路を自動生成するものをつくっていて、縦と横の長さ、出入り口の数の数値を入力し
フォーム内に設置したボタンをクリックすると
その数値に応じた長さの線が描画されるようにしているのですが、その数値の範囲を限定させたいのです。

範囲の限定についてですが、
・入力する数値の最大最小を決めて、その範囲外の数字や文字が入力されても実行画面では反応はないようにしたい。
・範囲内の数値が入力されたときのみ応答がある。
・範囲は最小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;
        }
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • 退会済みユーザー

    2016/04/22 11:25

    こちらの質問が他のユーザから「やってほしいことだけを記載した丸投げの質問」という指摘を受けました
    「質問を編集する」ボタンから編集を行い、調査したこと・試したことを記入していただくと、回答が得られやすくなります。

  • HiroshiWatanabe

    2016/04/22 11:26

    入力された値が範囲内か判断すればいいだけでは無いですか? 丸々なサンプルを要求されても困るので例えば先に入力値の範囲判定していないサンプルをご自身で用意(提示)されてはどうでしょうか…それをどう改造すればいいか、というアドバイスの方が回答を得られやすいと思います。

    キャンセル

回答 3

+1

NumericUpDownを使いましょう。
numericUpDown1.Minimum = 2;
numericUpDown1.Maximum = 40;

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+1

Window フォームアプリケーション であれば、
Windows Forms のための検証コントロール
http://mnow.wankuma.com/cs2005_mnowcontrol1.html
の様なサイトを参考にして、実装したりします。
質問からすると↑のサイトを見ても、チンプンカンプンかな?であれば、
検索ワード:C# 数値範囲チェック
で検索をしてみてください。事例が見つかります。

入力用の数値範囲を限定できるコントロールは単独で使う事もあるので、
ユーザーコントロールを作成して、汎用的に使える様にしておくと
共通化できたりします。

で、質問者さんが覚える必要があること。
1.質問を整理して、要求、要望を具体的に、箇条書きに出来る様になる事。
2.箇条書きに出来れば、検索が可能な事が多くなりますので、
  グーグル検索を使って、検索をしてみます。
  検索事例で不明な部分があれば、具体的に、何が不明か、何処が不明か、で
  自身で再度調べたりした上で、質問したりします。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

コード提示を含め,回答を削除します

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

関連した質問

同じタグがついた質問を見る

  • C#

    7487questions

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

  • Visual Studio

    1924questions

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