Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 | 2 |

 

  Вопрос: Однотипная работа с однотипными элементами на форм Добавлено: 21.10.09 01:14  

Автор вопроса:  skobkin.ru | Web-сайт: skobkin.ru | ICQ: 4163090 
Имеется много полей с разными именами на форме.
Есть два вопроса:
1 - можно ли как-то по типу for each обратиться ко всем текстовым полям формы и очистить их?
2 - можно ли (и как?) обращаться к элементам по очереди через цикл for, если разница между именами элементов - цифра в конце.

Если же есть другие, более удобные способы - подскажите их.

Ответить

  Ответы Всего ответов: 29  

Номер ответа: 1
Автор ответа:
 skobkin.ru



ICQ: 4163090 

Вопросов: 1
Ответов: 4
 Web-сайт: skobkin.ru
 Профиль | | #1
Добавлено: 21.10.09 01:15
Да, забыл сказать. Язык vb.net

Ответить

Номер ответа: 2
Автор ответа:
 __Pavel__



Вопросов: 29
Ответов: 284
 Web-сайт: ммм.сайта.НЕТ
 Профиль | | #2
Добавлено: 21.10.09 01:18
Если же есть другие, более удобные способы - подскажите их.

Есть - не создавать бесполезные массивы ТекстБоксов... а использовать другие контролы!

Ответить

Номер ответа: 3
Автор ответа:
 skobkin.ru



ICQ: 4163090 

Вопросов: 1
Ответов: 4
 Web-сайт: skobkin.ru
 Профиль | | #3
Добавлено: 21.10.09 01:21
Когда я просил подсказать способ - то, видимо, я хотел какой-то конкретики.

Ответить

Номер ответа: 4
Автор ответа:
 BG(Алексей)



Вопросов: 26
Ответов: 295
 Профиль | | #4 Добавлено: 21.10.09 01:35
Наводка, а дальше сам :)
  1. ...
  2.    If TypeOf c Is ... Then
  3.       что-то делаешь
  4.    End If

Ответить

Номер ответа: 5
Автор ответа:
 skobkin.ru



ICQ: 4163090 

Вопросов: 1
Ответов: 4
 Web-сайт: skobkin.ru
 Профиль | | #5
Добавлено: 21.10.09 01:43
Честно говоря, не очень понял. Перебирать-то элементы как?
Это условие ведь должно быть в цикле, который элементы перебирает? А я собственно про цикл и спрашивал. Но за этот совет тоже спасибо, пригодится!

Ответить

Номер ответа: 6
Автор ответа:
 __Pavel__



Вопросов: 29
Ответов: 284
 Web-сайт: ммм.сайта.НЕТ
 Профиль | | #6
Добавлено: 21.10.09 01:45
  1.         For Each obj As Object In Me.Controls
  2.             If TypeOf obj Is TextBox Then
  3.                 CType(obj, TextBox).Text = "1"
  4.             End If
  5.         Next

с тебя... хм... "спасибо" ;)

Ответить

Номер ответа: 7
Автор ответа:
 __Pavel__



Вопросов: 29
Ответов: 284
 Web-сайт: ммм.сайта.НЕТ
 Профиль | | #7
Добавлено: 21.10.09 01:48
А вот перебор по имени как ты просил во втором случае:
  1.         For int As Integer = 1 To 10
  2.             CType(Me.Controls("TextBox" & Convert.ToString(int)), TextBox).Text = "1"
  3.         Next

С тебя второе "СПАСИБО" (большими буквами) :)

Ответить

Номер ответа: 8
Автор ответа:
 __Pavel__



Вопросов: 29
Ответов: 284
 Web-сайт: ммм.сайта.НЕТ
 Профиль | | #8
Добавлено: 21.10.09 01:52
Но всеже еще раз скажу, что если слишком много ТекстБоксов - это не есть хорошо :)
Лучше юзай DataGridView тот же массив ТекстБоксов ;)

Ответить

Номер ответа: 9
Автор ответа:
 __Pavel__



Вопросов: 29
Ответов: 284
 Web-сайт: ммм.сайта.НЕТ
 Профиль | | #9
Добавлено: 21.10.09 01:53
Кстати, есть ли другой способ привести объект к нужному типу кроме старого CType? А то я чет не смог найти :)

Ответить

Номер ответа: 10
Автор ответа:
 skobkin.ru



ICQ: 4163090 

Вопросов: 1
Ответов: 4
 Web-сайт: skobkin.ru
 Профиль | | #10
Добавлено: 21.10.09 01:54
Их не много. Их в одном случае 6, в другом до 12.
Но еще раз СПАСИБО за помощь. В сторону датагрида тоже гляну. М.б, найдет применение. Надо подумать над реализацией.

Ответить

Номер ответа: 11
Автор ответа:
 BG(Алексей)



Вопросов: 26
Ответов: 295
 Профиль | | #11 Добавлено: 21.10.09 04:44
  1.     Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  2.         For Each c As Control In Me.Controls
  3.             If TypeOf c Is TextBox Then
  4.                 DirectCast(c, TextBox).Text = "Fuck You"
  5.             End If
  6.         Next
  7.     End Sub

Ответить

Номер ответа: 12
Автор ответа:
 BG(Алексей)



Вопросов: 26
Ответов: 295
 Профиль | | #12 Добавлено: 21.10.09 04:48
Или...
  1.     Private Sub TextBox1_MouseEnter(ByVal sender As Object, ByVal e As System.EventArgs) _
  2.     Handles TextBox1.MouseEnter, TextBox2.MouseEnter, TextBox3.MouseEnter, TextBox4.MouseEnter
  3.         DirectCast(sender, TextBox).Text = "Fuck You"
  4.     End Sub

И этих "или" может быть много :)

Ответить

Номер ответа: 13
Автор ответа:
 BG(Алексей)



Вопросов: 26
Ответов: 295
 Профиль | | #13 Добавлено: 21.10.09 04:51
__Pavel__ пишет:
Но всеже еще раз скажу, что если слишком много ТекстБоксов - это не есть хорошо :)
Лучше юзай DataGridView тот же массив ТекстБоксов ;)

 

А с какого перепуга вдруг?

Ответить

Номер ответа: 14
Автор ответа:
 Dully



ICQ: 229882730 

Вопросов: 19
Ответов: 51
 Профиль | | #14 Добавлено: 21.10.09 05:37
  1.         For Each oCtrl As Control In Controls
  2.             If TypeOf oCtrl Is TextBox Then
  3.                 oCtrl.Text = String.Empty
  4.             End If
  5.         Next
  6.  
  7.         Dim strName As String
  8.         Dim oControl As Control
  9.         For cnt = 1 To 5
  10.             strName = "TextBox" & cnt.ToString
  11.             oControl = Controls.Item(strName)
  12.             oControl.Text = String.Empty
  13.         Next

Ответить

Номер ответа: 15
Автор ответа:
 BG(Алексей)



Вопросов: 26
Ответов: 295
 Профиль | | #15 Добавлено: 21.10.09 06:34
Dully пишет:
  For Each oCtrl As Control In Controls
             If TypeOf oCtrl Is TextBox Then
                 oCtrl.Text = String.Empty
             End If
         Next


Не правильно.
oCtrl нужно привести к типу.

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам