Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Имена ComboBox в цикле / 20 сообщений из 20, страница 1 из 1
09.02.2015, 08:43
    #38874412
Etamin419
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Имена ComboBox в цикле
Добрый день!
Подскажите, может кто сталкивался с таким.
Имеется примерно 16 combobox'ов и для каждого я вручную подцепляю свой DataTable и прописываю различные параметры.
Можно ли как то в цикле указать имена combobox'ов?
Код: c#
1.
2.
for(int i=0;i<16;i++)
{combobox+i .DisplayMember = "Name";}
...
Рейтинг: 0 / 0
09.02.2015, 09:12
    #38874434
D129
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Имена ComboBox в цикле
Etamin419,

Вот так хотите?
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
	private void button1_Click(object sender, EventArgs e)
		{
			foreach(var anyControl in this.Controls)
			{
				ComboBox oneCombo = anyControl as ComboBox;
				if (oneCombo != null)
				{ 
                                       if(oneCombo.Name == "")
                                        {
                                         } 
					//......
				
				}
			}
		}



Вообще-то вы не так решаете задачу, сейчас вас в этом убеждать будут...
Но для начала надо набить шишку самостоятельно....
:-)
...
Рейтинг: 0 / 0
09.02.2015, 09:57
    #38874477
Etamin419
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Имена ComboBox в цикле
D129,
благодарю, то что нужно. Только почему он начинает перебирать с конца? т.е. ComboBox16, 15 .....
...
Рейтинг: 0 / 0
09.02.2015, 10:04
    #38874485
D129
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Имена ComboBox в цикле
Etamin419,

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
			var allCombo = this.Controls.OfType<ComboBox>().OrderBy(oneC => oneC.Name);

			foreach (ComboBox oneCombo in allCombo)
			{
				//......
				if (oneCombo.Name == "")
				{

				}
			}
...
Рейтинг: 0 / 0
09.02.2015, 10:06
    #38874488
fortibransa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Имена ComboBox в цикле
Тут нужна рекурсия ибо контрол может содержать в себе кучу других контролов которые могут содержать в себе еще другую тучу контролов и тд.
За место foreach используй for(int i=0;i<this.Controls.Count;i++) this.Controls[i] ...
...
Рейтинг: 0 / 0
09.02.2015, 10:10
    #38874492
D129
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Имена ComboBox в цикле
fortibransaТут нужна рекурсия ибо контрол может содержать в себе кучу других контролов которые могут содержать в себе еще другую тучу контролов и тд.
За место foreach используй for(int i=0;i<this.Controls.Count;i++) this.Controls[i] ...

Если потелепатить на расстоянии, то вообще нужна динамическая генерация контролов при чтении данных из базы...
Но это не сразу кажется очевидным и самым простым решением - к этому надо придти.
Судя по вопросу - автор осваивает винформы самостоятельно, поэтому надо подождать....
:-)
...
Рейтинг: 0 / 0
09.02.2015, 10:57
    #38874545
Arm79
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Имена ComboBox в цикле
fortibransaЗа место foreach используй for(int i=0;i<this.Controls.Count;i++) this.Controls[i] ...
Странный совет
...
Рейтинг: 0 / 0
09.02.2015, 11:37
    #38874581
D129
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Имена ComboBox в цикле
Arm79fortibransaЗа место foreach используй for(int i=0;i<this.Controls.Count;i++) this.Controls[i] ...
Странный совет
Попытка перебора в нужном порядке без сортировки.
...
Рейтинг: 0 / 0
09.02.2015, 11:39
    #38874585
fortibransa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Имена ComboBox в цикле
Arm79fortibransaЗа место foreach используй for(int i=0;i<this.Controls.Count;i++) this.Controls[i] ...
Странный советОбоснуй.
...
Рейтинг: 0 / 0
09.02.2015, 11:46
    #38874594
Arm79
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Имена ComboBox в цикле
А что там обосновывать? Если какой-либо класс поддерживает IEnumerable, то и цикл нужно использовать на его основе, если нет СПЕЦИАЛЬНЫХ показаний к применению других типов циклов. Например, если нужно выиграть грошик процессорного времени.

Доступ по индексу вынуждает вас делать предположения о структуре класса, что явно излишне.

Так что уж вы обоснуйте, чем вас foreach не устроил, что вы дали совет на for
...
Рейтинг: 0 / 0
09.02.2015, 12:01
    #38874619
Arm79
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Имена ComboBox в цикле
D129Arm79пропущено...

Странный совет
Попытка перебора в нужном порядке без сортировки.
Это ошибочная трактовка. И опять таки, предположение о том, как хранятся данные в класса. Понятно, что никто не мешает исходники посмотреть, и не предположения делать, а точно знать. Но концептуально это неправильно.

Тем более, что имена контролов могут и не заканчиваться на цифры :-)
...
Рейтинг: 0 / 0
09.02.2015, 12:04
    #38874624
fortibransa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Имена ComboBox в цикле
Arm79,
Контролы в той коллекции хранятся по порядку поступления этих контролов в ту коллекцию, что не так в этом утверждении?
...
Рейтинг: 0 / 0
09.02.2015, 12:04
    #38874626
fortibransa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Имена ComboBox в цикле
Arm79А что там обосновывать? Если какой-либо класс поддерживает IEnumerable, то и цикл нужно использовать на его основе, если нет СПЕЦИАЛЬНЫХ показаний к применению других типов циклов. Например, если нужно выиграть грошик процессорного времени.

Доступ по индексу вынуждает вас делать предположения о структуре класса, что явно излишне .

Так что уж вы обоснуйте, чем вас foreach не устроил, что вы дали совет на forЧаво? Ты это об чЁм?
...
Рейтинг: 0 / 0
09.02.2015, 12:07
    #38874633
Arm79
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Имена ComboBox в цикле
fortibransaArm79А что там обосновывать? Если какой-либо класс поддерживает IEnumerable, то и цикл нужно использовать на его основе, если нет СПЕЦИАЛЬНЫХ показаний к применению других типов циклов. Например, если нужно выиграть грошик процессорного времени.

Доступ по индексу вынуждает вас делать предположения о структуре класса, что явно излишне .

Так что уж вы обоснуйте, чем вас foreach не устроил, что вы дали совет на forЧаво? Ты это об чЁм?
Вот об этом:
fortibransaКонтролы в той коллекции хранятся по порядку поступления этих контролов в ту коллекцию

Сегодня так, завтра по другому. Андестенд? Не нужно завязываться на внутреннюю структуру внешнего класса.
...
Рейтинг: 0 / 0
09.02.2015, 12:13
    #38874642
fortibransa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Имена ComboBox в цикле
Arm79fortibransaпропущено...
Чаво? Ты это об чЁм?
Вот об этом:
fortibransaКонтролы в той коллекции хранятся по порядку поступления этих контролов в ту коллекцию

Сегодня так, завтра по другому. Андестенд? Не нужно завязываться на внутреннюю структуру внешнего класса.Ты не перетрудился, ТС спросил почему не по порядку, ему ответили, перебирай как массив будет в порядке поступления. В любом случае это будет МАССИВ. Никто не собирается завязываться ни на какие внутренние структуры внешнего класса (вообще какой-то набор слов).
ТС задал простой вопрос, он новичок, ему нужен простой ответ без этого бреда ООП.
...
Рейтинг: 0 / 0
09.02.2015, 12:22
    #38874656
Arm79
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Имена ComboBox в цикле
fortibransaТы не перетрудился, ТС спросил почему не по порядку, ему ответили, перебирай как массив будет в порядке поступления. В любом случае это будет МАССИВ. Никто не собирается завязываться ни на какие внутренние структуры внешнего класса (вообще какой-то набор слов).
ТС задал простой вопрос, он новичок, ему нужен простой ответ без этого бреда ООП.
1) Не ты, а вы.
2) в данном конкретном случае МОЖЕТ и по порядку, но не факт что для других аналогичных классов это утверждение справедливо, как и не факт, что в будущих версиях это не изменится. Понятно, что вероятность этого стремится с нулю, но завязываться на вероятности не стоит.
3) Для Control - может и всегда будет массив. А для других классов - может и не массив.
4) Вот вы и завязываетесь - считая, что внутри Control содержит элементы в массиве. И что каждый последующий добавленный элемент добавляется в конец.
5) Точно, бред из ООП - использование предназначенного для перебора интерфейса IEnumerable. ТС нужно в руки чистый C дать, чтобы он не заморачивался с этим бредовым ООП.
...
Рейтинг: 0 / 0
09.02.2015, 12:33
    #38874671
fortibransa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Имена ComboBox в цикле
Arm79, да штож тебя понесло-то так. Мы тут ваще-то не на светском рауте. И в любом случае массив останется массивом хоть ты как его называй, компутер умеет только складывать, все остальное основано на этом и тд и тп. Хватит сратся, а то ТС заявит куда надо
...
Рейтинг: 0 / 0
09.02.2015, 13:04
    #38874712
Pallaris
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Имена ComboBox в цикле
Etamin419Можно ли как то в цикле указать имена combobox'ов?
[/src]

А если на форме завтра появится комба, у которой другое предназначение?
...
Рейтинг: 0 / 0
09.02.2015, 15:22
    #38874884
D129
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Имена ComboBox в цикле
PallarisEtamin419Можно ли как то в цикле указать имена combobox'ов?

А если на форме завтра появится комба, у которой другое предназначение?

"Я же предупреждал.... Это добром не кончится..." (с) капитан Зеленый.
:-)
...
Рейтинг: 0 / 0
10.02.2015, 11:48
    #38875666
Etamin419
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Имена ComboBox в цикле
эмм...ребята, спасибо мне хватило этого решения
Код: c#
1.
2.
3.
4.
5.
6.
7.
var allCombo = this.Controls.OfType<ComboBox>().OrderBy(oneC => oneC.Name);
			foreach (ComboBox oneCombo in allCombo)
			{
				if (oneCombo.Name == "")
				{
				}
			}


все работает так, как задумалось.

PallarisА если на форме завтра появится комба, у которой другое предназначение?
есть конечно вероятность что может появиться, но обойти всегда можно будет.....как нибудь)
также это задача требовалась мне и для других вариантов: собрать значения во всех комобобоксах и сохранить стрингом их в базу (свои заморочки).
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
var gb1 = this.groupBox1.Controls.OfType<ComboBox>().OrderBy(oneC => oneC.Name);
            foreach (ComboBox oneCombo in gb1)
            {
                c++;
                if (oneCombo.Text != "")
                {
                    line += "cbGS" + c + ":" + oneCombo.Text + " ";
                }
            }
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Имена ComboBox в цикле / 20 сообщений из 20, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]