UPD: проблема с установкой имени элементу PictureBox
|
|
skandver | Дата: Пятница, 23 Марта 2012, 00:05 | Сообщение # 1 |
почетный гость
Сейчас нет на сайте
| Собственно, проблема в том, что я создаю цикл for(), с условием int i <= 100 и i++, создаю стринговую переменную, кладу в неё sender(имя - pic) + i.ToString(), и не получается сделать его PictureBox'ом. Это нужно для того, чтобы задисэйблить 100 ПикчерБоксов, в одном цикле. То есть, грубо говоря, надо либо поставить его как PictureBox, либо же сменить имя PictureBox'а(иного) на string.
Сообщение отредактировал skandver - Четверг, 29 Марта 2012, 20:46 |
|
| |
Undead | Дата: Пятница, 23 Марта 2012, 00:38 | Сообщение # 2 |
NeoAxis User
Сейчас нет на сайте
| skandver, Размыто обьяснил. Тут нет телепатов. Покажи код.
Вcем зла.
|
|
| |
skandver | Дата: Пятница, 23 Марта 2012, 00:51 | Сообщение # 3 |
почетный гость
Сейчас нет на сайте
| Code private void ys1_Click(object sender, EventArgs e) { PictureBox ys = (PictureBox)sender; ys.Image = Properties.Resources.ship; ships1++; y_ships[x_s] = +1; if (ys.Tag == "") { ys.Tag = "ship"; ships1++; } else { if (ys.Tag == "ship") {
} } string resname; listBox2.Items.Add(ships1);
if (ships1 == 10) { res_start = true; } if (res_start) { ys.Enabled = false; for (int j = 1; j <= 100; j++) { ship2.Name = "ys" + j.ToString(); ship2.Enabled = false; } } you_score.Text = ships1.ToString(); }
Сообщение отредактировал skandver - Пятница, 23 Марта 2012, 00:52 |
|
| |
Undead | Дата: Пятница, 23 Марта 2012, 01:24 | Сообщение # 4 |
NeoAxis User
Сейчас нет на сайте
| skandver, Ну т.к. ты не прокоментировал для чего у тебя переменные, то ничего толком непонятно. Вопрос конкретней поставь. Что не работает? Могу сказать, только то, что в цикле ты 100 раз работаешь с одним и тем же объектом.
Вcем зла.
|
|
| |
skandver | Дата: Пятница, 23 Марта 2012, 01:38 | Сообщение # 5 |
почетный гость
Сейчас нет на сайте
| Undead, у меня есть 100 pictureBox. Когда я кликаю на один из них, к переменной ships1 прибавляется единица. Когда эта переменная достигает значения 10, запускается цикл, который проверяет это значение, и блокирует все puctureBox через sender, то есть чтобы не писать все 100 боксов. Проблема в том, что я не понимаю, как это сделать(заблокировать все боксы через один объект).
|
|
| |
Stage | Дата: Пятница, 23 Марта 2012, 02:32 | Сообщение # 6 |
постоянный участник
Сейчас нет на сайте
| Телепат в треде. Проблему можно решить добавлением ссылок на боксы в какой-нибудь List, тогда все что тебе останется пройтись через foreach по каждому элементу и отключить. Ну, как вариант, можно заюзать рефлексию и тогда ты сможешь реализовать свою первоначальную идею.
|
|
| |
skandver | Дата: Четверг, 29 Марта 2012, 20:49 | Сообщение # 7 |
почетный гость
Сейчас нет на сайте
| Stage, спасибо за совет. Я нашёл странное решение. Т.к. у меня все PictureBox - в panel, я поставил его(panel) блокирование после того, как корабли достигают 10 штук в переменной.Добавлено (29.03.2012, 20:49) --------------------------------------------- Проблема состоит в том, что хоть этот код и правильно выдаёт имена box'ов: Code string resname = "res" + random_number[x].ToString(); PictureBox res = new PictureBox(); res.Name = resname.ToString(); res.Tag = "tag"; textBox1.Text += res.Name.ToString() + " "; Но тэги ставить он напрочь отказывается. Такой же бред происходит и с другими функциями. Запихнуть все эти элементы в массив конечно можно, ноя я не знаю, будет ли это вообще работать.
|
|
| |