0

小さな道具を作っています。switch以下のコードがこれを達成するための最速/最良の方法であるかどうかを知りたいだけですか? PHP では、次のように変数名を動的に参照します。$Stop{int Stop} -> $BackColor = "Color"

CSSGM

public void Populate(Color Color, int Stop)
{
    Colour.BackColor = Color;             // Bottom left - PictureBox
    Hex.Text = ARGBToHex(Color.ToArgb()); // Hex (#703919) - TextBox
    Red.Text = Color.R.ToString();        // Red (153) - TextBox
    Green.Text = Color.G.ToString();      // Green (180) - TextBox
    Blue.Text = Color.B.ToString();       // Blue (209) - TextBox
    Alpha.Text = "100";                   // Alpha (100) - TextBox
    StopText.Text = Stop.ToString();      // Read-only (1) - TextBox
    switch(Convert.ToInt16(StopText.Text))
    {
        case 1: Stop1.BackColor = Color; break;  // Small light blue rectangle - PictureBox
        case 2: Stop2.BackColor = Color; break;  // Small dark blue rectangle - PictureBox
    }
}
4

3 に答える 3

3

あなたはこれを行うことができます:

this.Controls.OfType<PictureBox>().First(x => x.Name.EndsWith(StopText.Text)).BackColor = Color;
于 2013-01-24T02:09:49.093 に答える
1

StopText.Text特に、割り当てのシーケンスを並べ替えると、本当に楽になりますStopX.BackColor

次に、使用法を変更し、意味のない数字(1または2)の代わりにPictureBoxを渡します。

public void Populate(Color Color, PictureBox Stop)
{
  Colour.BackColor = Color;             // Bottom left - PictureBox
  Hex.Text = ARGBToHex(Color.ToArgb()); // Hex (#703919) - TextBox
  Red.Text = Color.R.ToString();        // Red (153) - TextBox
  Green.Text = Color.G.ToString();      // Green (180) - TextBox
  Blue.Text = Color.B.ToString();       // Blue (209) - TextBox
  Alpha.Text = "100";                   // Alpha (100) - TextBox

  Stop.BackColor = Color;
  StopText.Text = Stop.Name.Substring(Stop.Name.Length - 1, 1)
}
于 2013-01-24T02:19:30.660 に答える
0

それ以外の

StopText.Text = Stop.ToString();
switch(Convert.ToInt16(StopText.Text))
{
    case 1: Stop1.BackColor = Color; break;
    case 2: Stop2.BackColor = Color; break;
}

しない理由

//have an array of 2 Stops called Stops
StopText.Text = Stop.ToString();
if (Stop < Stops.Length)
{
  Stops[Stop].BackColor = Color;
}

(そして、一貫して 0 または 1 のインデックスを使用していることを確認してください)

于 2013-01-24T01:54:49.813 に答える