2016-10-20 22 views
1

Visual Studioを使用して、3つのフィールドを組み合わせて3つのフィールドを追加できるアプリケーションを作成しました。今、私は、負の数を追加することができないようにすべての3つのフィールドを検証する必要があります。負の数が入力された場合、各フィールドは「正の最初の数字を入力してください」というような固有のメッセージも返さなければなりません。複数のフィールドの妥当性確認

私は1つのフィールドでそれを行う方法を考えましたが、負の数を受け入れないように(そして一意のメッセージを表示するために)3つのフィールドすべてに対してどのように設定しますか?ここで

は私が持っているものです。

{ 
    int num = int.Parse(txtNum1.Text); 

    if (num <0) 
    { 
     MessageBox.Show("Please enter a positive first number"); 
    } 
    else 
    { 
     int num1 = int.Parse(txtNum1.Text); 
     int num2 = int.Parse(txtNum2.Text); 
     int num3 = int.Parse(txtNum3.Text); 
     int sum = num1 + num2 + num3; 
     txtResult.Text = sum.ToString(); 
    } 

がうまくいけば、これは理にかなっています。

+1

- 申し訳ありません。私にはそうではありません。ここでどのGUI APIを使用しているのかは明らかではありません。しかし、すべてのAPI(Winforms、WPF、Winrtなど)には、使用する必要があるフィールド検証機能が組み込まれています。それを超えて、コードはすでに3つのフィールドをすべて解析します。その例に従って、解析された各値をチェックして、それが非負であることを確認することはできません(厳密に言えば、それは最初のことでやっていることです。助けが必要なことはまったく明確ではなく、ここには十分な文脈がありません。 –

答えて

1

質問はあなたがWPFやリサイズを使用しているかどうかを知らせるされていないのに対してこれは、あなた

int num = 0; 
bool atLeastOneisNegative = false; 
foreach (Control x in this.Controls) 
{ 
    if (x is TextBox) 
    { 
     num = 0; 
     num = int.Parse(((TextBox)x).Text); 
     if(num < 0) 
     { 
      atLeastOneisNegative = true; 
      MessageBox.Show("Please enter a positive first number"); 
     } 
    } 
} 

if(!atLeastOneisNegative) 
{ 
    int num1 = int.Parse(txtNum1.Text); 
    int num2 = int.Parse(txtNum2.Text); 
    int num3 = int.Parse(txtNum3.Text); 
    int sum = num1 + num2 + num3; 
    txtResult.Text = sum.ToString(); 
} 

を助けるかもしれません。しかし、ロジックは、すべてのTextBoxを反復処理し、その値が正であることを確認するのに役立ちます。

+0

皆さん、ありがとうございます。これはC#クラスでの2週間目です。私は追加の事を考え出した。今私は乗算のために同じことをしようとしています。入力された数字のいずれもゼロになることはできません。何らかの理由で私は問題を抱えています。私は暗黙のうちに "int"型を "bool"に変換することはできません。 – Ulcis

+0

こんにちは@Ulcisもしこの答えや答えがあなたの質問を解決したら、[それを受け入れる]ことを検討してください(http://meta.stackexchange.com/questions/5234/how-あなたは解決策を見つけたと回答者とあなた自身の両方に評判を与えていることを広範なコミュニティに示します。 –

+0

第2に、別の質問がある場合は、フォームがどのように表示されるかなど、すべての詳細を含む新しい質問を作成します。 。 –

0

とにかくNumericUpDownコントロールまたはTextBox.Validatingイベントを処理するが、と簡単にすることができ、「うまくいけば、これは理にかなっています。」_ _

int i1, i2, i3; 
if (!int.TryParse(txtNum1.Text, out i1) || i1 < 0) { MessageBox.Show("Please enter a positive first number"); return; } 
if (!int.TryParse(txtNum2.Text, out i2) || i2 < 0) { MessageBox.Show("Please enter a positive second number"); return; } 
if (!int.TryParse(txtNum3.Text, out i3) || i3 < 0) { MessageBox.Show("Please enter a positive third number"); return; } 
int sum = i1 + i2 + i3; 
txtResult.Text = sum.ToString(); 
関連する問題