Как я могу изменить значение флажка «флажок» в пользовательском элементе управления после программного добавления его в таблицу?
У меня есть пользовательский элемент управления, который имеет текстовое поле и флажок. (Мне не хватает репутации, чтобы опубликовать изображение, но вот выстрел)
https://imgur.com/a/yyXG7p8
Имеет флажок и текстовое поле.
В этом классе есть открытый метод, который позволяет установить флажок в значение true или false:
public void setCheckBox(bool set)
{
checkBox1.Checked = set;
}
В другом классе, главном классе, у меня есть цикл, который добавляет кучу этих пользовательских элементов управления на панель:
private void DrawInputBits()
{
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 32; j++)
{
currentTag = tagsFile[tagIndex];
tagIndex++;
CustomControl.BitsControl newBits = new CustomControl.BitsControl(i, j, currentTag, false);
InputBitsTable.Controls.Add(newBits);
}
}
}
Если вы не можете сказать, каждый флажок содержит значение бита в 32-битном числе для 4 чисел (следовательно, вложенные циклы 0-31, 4 раза), и смысл в том, чтобы показать или контролировать значения , Вы можете игнорировать код о тегах. Все, что он делает, это читает текст из файла и заполняет текстовое поле этим прочитанным текстом.
Когда код выполняется, если состояние бита изменяется, флажок также должен изменить состояние. Следующий цикл будет изменен для прохождения массива целых чисел (4 дюйма) и обновления каждого флажка после считывания состояния каждого бита. В настоящее время цикл просто настроен на изменение всех битов на «истина». В конце концов, это не то, чего я хочу, но дело в том, что я даже не могу ссылаться на пользовательские элементы управления на панели, чтобы вообще поменять флажок. Я думал, что следующее сработает, но ничего, что я пробовал, пока не получилось.
private void UpdateInputsScreen(int[] inputDINTS)
{
for(int i = 0; i < InputBitsTable.Controls.Count; i++)
{
for(int j = 0; j < 32; j++)
{
InputBitsTable.Controls[i].setCheckBox(true);//this line gives an error.
}
}
}
Это класс для пользовательского элемента управления.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
namespace CustomControl
{
public partial class BitsControl: UserControl
{
int bit = 0;
int dint = 0;
string tag = "";
BitsControl(int dint, int bit, string tag, bool isEnabled)
{
InitializeComponent();
this.dint = dint;
this.bit = bit;
this.tag = makeTag(tag, dint, bit);
this.textBox1.Text = this.tag;
checkBox1.Enabled = isEnabled;
}
private string makeTag(string tag, int dint, int bit)
{
string newTag = tag + ":[" + dint + "]." + bit;
return newTag;
}
public void setCheckBox(bool set)
{
checkBox1.Checked = set;
}
}
}
Основной класс слишком длинный, чтобы предоставить, но я могу по запросу.