У меня есть приложение для импорта некоторых изображений из папки в другую. Я использую picturebox, чтобы показать свои фотографии, и рядом с ним есть флажок. Если это не проверено, я не хочу их импортировать.
Итак, вот мой код для создания флажка:
public void CreateCheckBox(Form formInstance,int yLocation, int xLocation, int iNumber)
{
CheckBox box = new CheckBox();
box.Name = "cbxName" + iNumber.ToString();
box.Location = new Point(xLocation+40,yLocation+90);
box.Visible = true;
box.Enabled = true;
box.Checked = true;
box.CheckedChanged += new EventHandler(cbx_CheckedChange);
formInstance.Controls.Add(box);
}
И моя картинкаБокс:
public void CreatePictureBox(Form formInstance,int iNumber)
{
string[] tNomImage = RecupererNomImage();
PictureBox pbxImage = new PictureBox();
pbxImage.Name = "pbxName" + iNumber.ToString();
pbxImage.Image = Image.FromFile(tNomImage[iNumber]);
pbxImage.Width = 90;
pbxImage.Height = 90;
pbxImage.Location = new Point(iXLocation, iYLocation);
pbxImage.Visible = true;
pbxImage.BorderStyle = BorderStyle.FixedSingle;
pbxImage.SizeMode = PictureBoxSizeMode.Zoom;
formInstance.Controls.Add(pbxImage);
pbxImage.Enabled = false;
CreateCheckBox(this, iYLocation, iXLocation, iNumber);
if (iXLocation+iXSpacing*2 > this.Width)
{
iXLocation = XLOCATION;
iYLocation += iXSpacing;
}
else
{
iXLocation += iXSpacing;
}
И я хочу знать, какой флажок установлен, чтобы я мог экспортировать изображение рядом с ним.
3 ответа
Я предполагаю, что ящик с картинками будет иметь имя вроде:
pbxName141
И его соответствующий флажок будет иметь имя, например:
cbxName141
Вы можете запросить форму для всех отмеченных флажков:
var cbs = formInstance.Controls.OfType<CheckBox>().Where(cb => cb.Checked);
Вы можете преобразовать имя флажка в соответствующее имя графического поля и найти его по имени:
foreach(var cb in cbs){
var pbName = "p" + cb.Name.Substring(1);
var pb = formInstance.Controls[pbName];
}
Так много способов снять шкуру с этого кота..
Измените свои методы, чтобы они ВОЗВРАЩАЛИ созданный элемент управления:
public CheckBox CreateCheckBox(Form formInstance,int yLocation, int xLocation, int iNumber)
{
// ... existing code ...
return box;
}
Теперь вы можете сохранить ссылку на этот CheckBox в свойстве Tag()
PictureBox:
public PictureBox CreatePictureBox(Form formInstance,int iNumber)
{
// ... existing code ...
CheckBox cb = CreateCheckBox(this, iYLocation, iXLocation, iNumber);
pbxImage.Tag = cb;
// ... existing code ...
return pbxImage;
}
Наконец, добавьте все возвращенные PictureBox в List<PictureBox>
, чтобы вы могли легко ссылаться на них и перебирать их. Просто приведите элемент управления, хранящийся в свойстве Tag()
, обратно в CheckBox, и вы сможете определить, следует ли импортировать каждый PictureBox или нет.
List<CheckBox> c = Controls.OfType<CheckBox>().Cast<CheckBox>().ToList();
forech(CheckBox item in c){
if(c.checked){
}
}
Похожие вопросы
Новые вопросы
c#
C# (произносится как «see Sharp») — это высокоуровневый мультипарадигменный язык программирования со статической типизацией, разработанный Microsoft. Код C# обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, которое включает в себя .NET, .NET Framework, .NET MAUI и Xamarin среди прочих. Используйте этот тег для ответов на вопросы о коде, написанном на C#, или о формальной спецификации C#.