0

それぞれ別のラベルに 5 つの乱数があり、最低から最高の順に並べ替えて、新しいラベルに配置したいと考えています。

例: 1 ~ 60 の乱数のラベル。

number1.Text = 42
number2.Text = 51
number3.Text = 12
number4.Text = 33
number5.Text = 26

その数値を最小から最大まで、それぞれ別のラベルに配置したいと思います。

例:

sortNumber1.Text = 12
sortNumber2.Text = 26
sortNumber3.Text = 33
sortNumber4.Text = 42
sortNumber5.Text = 51

これまでのところ、次のコードを使用して、並べ替えられたすべての数値を 1 つのラベルに配置しようとしています。

private void button63_Click(object sender, EventArgs e)
{
    var orderNumber1 = Convert.ToInt32(number1.Text);
    var orderNumber2 = Convert.ToInt32(number2.Text);
    var orderNumber3 = Convert.ToInt32(number3.Text);
    var orderNumber4 = Convert.ToInt32(number4.Text);
    var orderNumber5 = Convert.ToInt32(number5.Text);
    int[] numbers = { orderNumber1, orderNumber2, orderNumber3, orderNumber4, orderNumber5};
    Array.Sort(numbers);

    int i = 0;
    for (i = 0; i < numbers.Length; i++)
    { 
        selected_number1.Text = (numbers[i].ToString());
    }
}

ただし、最後の(最大の)番号のみが入力されました。何かが意味をなさない場合、それは私が初心者だからです。私が理解できる解決策は素晴らしいでしょう。ありがとうございました。

4

6 に答える 6

0

並べ替えられた配列を反復処理するとき、次のステートメントで同じコントロールを現在の値に繰り返し設定します。

selected_number1.Text = (numbers[i].ToString());

私はおそらくこれらの行に沿って何かをするでしょう:

Label[] display  = { Sorted1 , Sorted2 , Sorted3 , Sorted4 , Sorted5 , } ;
Label[] unsorted = { Label1  , Label2  , Label3  , Label4  , Label5  , } ;
int[]   sorted   = unsorted.Select( x => int.Parse(x.Text) ).OrderBy( x => x ).ToArray() ;
for ( int i = 0 ; i < 5 ; ++i )
{
  display[i].Text = sorted[i].ToString() ;
}
于 2013-11-11T22:53:41.333 に答える