2

Есть массив кнопок:

Button[,] buttons = new Button[n,n];

Как пробегая по всем кнопкам на форме(или сетке), добавлять их в этот массив? И вообще как будет происходить "пробегание" по всем кнопкам(то есть в какой последовательности эти кнопки будут выбираться)?

Draktharon
  • 623
  • 1
  • 12
  • 27
  • @Foggy Finder а если на форме есть не только кнопки? – Draktharon Nov 12 '16 at 21:34
  • @Foggy Finder Да, если не трудно, я хотел бы получить массив кнопок 5х5 и снизу два лэйбла,каждый занимающий по 2 ячейки – Draktharon Nov 13 '16 at 07:52
  • А зачем вам это? Квадратный массив кнопок выглядит странно и очень в стиле WinForms. Опишите свою настоящую задачу. – VladD Nov 13 '16 at 08:41
  • @VladD Это сапер,причем размер поля можно выбрать,соответственно мне нужно уметь задавать сетку и размещать в каждой из ее ячеек кнопку – Draktharon Nov 13 '16 at 08:47
  • @Draktharon: Ага, понял. Где-то на сайте был пример, я найду. Только вам нужны не кнопки же, кнопки ведут себя совсем не так, как вам нужно. – VladD Nov 13 '16 at 08:51
  • @VladD а что же нужно? – Draktharon Nov 13 '16 at 11:36
  • @Draktharon: Нужен UserControl какой-нибудь, например. – VladD Nov 13 '16 at 12:02
  • @Draktharon: Вот вам пример того, как нужно привязывать к списку элементов, чтобы было квадратное поле: http://ru.stackoverflow.com/a/573196/10105. Дубликат? – VladD Nov 13 '16 at 12:03
  • @VladD Спасибо,пока что сложно,но как-нибудь разберусь – Draktharon Nov 13 '16 at 12:40
  • @Foggy Finder можете пояснить, что значит "Создаете ItemsControl (можно взять обычный ListBox) и определить для него шаблон."? – Draktharon Nov 14 '16 at 15:52
  • @FoggyFinder пишите в ответы – MihailPw Jun 23 '17 at 07:31

1 Answers1

1

Я бы пошёл следующим путём:

  1. Найти List<Button> allButtons — список всех элементов на форме.
  2. Вложенными циклами перебрать высоту и ширину формы, и проверить, есть ли на этой точке кнопка (top/left position) (простым allButtons.Where() проверяешь).
  3. Если кнопка есть на этой же строке — добавлять в двумерный массив в эту же строку.
  4. Если на этой строке пикселей кнопки нет, но есть на следующей — это уже новая строка двумерного массива.

Может и кривовато, но работать будет точно. И точно ничего не пропустишь.