Я хочу динамически добавлять флажки в x * y-матрицу. Самый простой способ, с которым я пришел, начать цикл for, который идет O (n²). У меня есть 2 TextBox, которые предназначены для ширины и высоты матрицы. В моем примере я сделал 10x10; Когда я нажимаю кнопку, он просто создает 1 флажок. Сначала я попытался напрямую добавить флажок в панель, но у меня как-то появилось исключение NullReferenceException. Теперь я нахожусь в списке, который заполняет цикл for и считывается после этого в цикле foreach.Добавить CheckBoxes во время выполнения в цикле для цикла в C#
Любая помощь будет оценена по достоинству.
Заранее спасибо
m0ddixx
Моя Try на это:
namespace LED_Matrix_Control
{
public partial class Form1 : Form
{
private LedMatrix ledMatrix;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
int width= Convert.ToInt32(breiteFeld.Text);
int height = Convert.ToInt32(hoeheFeld.Text);
List<CheckBox> ledchecks = new List<CheckBox>();
ledMatrix = new LedMatrix(breite, hoehe);
for(int x = 0; x < breite; x++)
{
for(int y = 0; y < hoehe; y++)
{
ledchecks.Add(addCheckBox(x, y));
}
}
foreach(CheckBox finalLedChk in ledchecks)
{
panel1.Controls.Add(finalLedChk);
}
}
private CheckBox addCheckBox(int x, int y)
{
CheckBox ledcheck = new CheckBox();
ledcheck.Location = new Point(x, y);
return ledcheck;
}
}
}
Какая проблема у вас с этим кодом? Я хочу, чтобы мне помогли, я предлагаю всегда описывать проблему по мере ее возникновения. Кстати, расположение ваших CheckBoxes слишком плотно. Добавьте множитель в X и Y – Steve
OK. Проблема состоит в том, чтобы иметь динамическую матрицу флажков для тиражирования светодиодной матрицы. Очевидно, что эти светодиоды могут быть включены или выключены. сама программа должна генерировать код для создания анимаций на основе ключевых кадров. но сначала пользователь должен установить ширину и высоту этой матрицы, а затем он должен генерировать x * y флажки во время выполнения. в моем случае он создает только один флажок. – m0ddixx
Измените эту строку на: _ledcheck.Location = new Point (x * 20, y * 20); _ Ваши флажки там, они только один над другим. – Steve