C#のコントロール配列からデータを読むにはどうすればよいですか
質問
Tabpage 'Tab1'に追加したトラックバーコントロールが次のとおりです。
TrackBar[] tbs = new TrackBar[nooftbsneeded];
// Add TrackBars
TrackBar tbx = new TrackBar();
tbx.Location = new Point(28, 150 + (i * 200));
tbx.Size = new Size(686, 45);
tbx.Minimum = 0;
tbx.Maximum = 16;
tbx.SmallChange = 1;
tbx.LargeChange = 2;
tbx.Value = 8;
// create events (using a lambda expression) for each trackbar to change values.
tbx.Scroll += (o, a) =>
{
// Update text values
if (tbx.Value == 0)
{
label3x.Text = "Extremely Better";
label4x.Text = "";
}
if (tbx.Value == 1)
{
label3x.Text = "Extremely Better";
label4x.Text = "";
}
if (tbx.Value == 2)
{
label3x.Text = "Very Strongly Better";
label4x.Text = "";
}
if (tbx.Value == 3)
{
label3x.Text = "Very Strongly Better";
label4x.Text = "";
}
if (tbx.Value == 4)
{
label3x.Text = "Strongly Better";
label4x.Text = "";
}
if (tbx.Value == 5)
{
label3x.Text = "Strongly Better";
label4x.Text = "";
}
if (tbx.Value == 6)
{
label3x.Text = "Moderately Better";
label4x.Text = "";
}
if (tbx.Value == 7)
{
label3x.Text = "Moderately Better";
label4x.Text = "";
}
if (tbx.Value == 8)
{
label3x.Text = "Equal";
label4x.Text = "Equal";
}
if (tbx.Value == 9)
{
label3x.Text = "";
label4x.Text = "Moderately Better";
}
if (tbx.Value == 10)
{
label3x.Text = "";
label4x.Text = "Moderately Better";
}
if (tbx.Value == 11)
{
label3x.Text = "";
label4x.Text = "Strongly Better";
}
if (tbx.Value == 12)
{
label3x.Text = "";
label4x.Text = "Strongly Better";
}
if (tbx.Value == 13)
{
label3x.Text = "";
label4x.Text = "Very Strongly Better";
}
if (tbx.Value == 14)
{
label3x.Text = "";
label4x.Text = "Very Strongly Better";
}
if (tbx.Value == 15)
{
label3x.Text = "";
label4x.Text = "Extremely Better";
}
if (tbx.Value == 16)
{
label3x.Text = "";
label4x.Text = "Extremely Better";
}
};
tbs[i] = tbx;
tab1.Controls.Add(tbs[i]);
トラックバーの個々の値を取得するにはどうすればよいですか?
私は考えられるコールのすべての組み合わせを試しました。私は、個別のトラックバーコントロールを参照する方法がわからないだけです。
解決
これがクラスレベルで宣言されていることを確認してください。
TrackBar[] tbs;
次に、あなたの方法で、それを初期化するだけです(それを再特定せずに):
tbs = new TrackBar[nooftbsneeded];
// ... Create track bars
その時点で、後で次を介して値を読むことができます。
var value = tbs[3].Value;
他のヒント
foreach(var control in tab1.Controls){
if(control.GetType() == typeof(TrackBar)){
object value = ((TrackBar)control).Value;
}
}
所属していません StackOverflow