2016-06-13 3 views
-1

Я программирую на Visual Basic. У меня есть одна форма.Напишите отдельные элементы списка в разные текстовые поля и повторите, пока все текстовые поля не будут заполнены.

Форма 1 содержит: nameTextBox addNameButton namesListBox generateButton

week1TextBox week2TextBox week3TextBox week4TextBox

пользователь должен перейти в форму 1 и введите имя в текстовом поле, а затем добавить имя в поле списка. Пользователь добавит 4 имени в поле списка. Итак, ListBox будет содержать имена: Адам, Бренда и Кэрол.

При нажатии кнопки generateButton имена 3 должны быть записаны в текстовые поля в этом порядке. Поэтому week1TextBox должен содержать «Адам», week2TextBox должен содержать «Бренда» и т. Д. ... но как только фамилия (в данном случае «Кэрол») записывается в текстовое поле, цикл должен начинаться. В конечном итоге могут быть до 50 недель текстовых полей (так что week50TextBox). Поэтому цикл должен повторяться снова и снова.

+0

Домашнее задание? Независимо от того, чтобы получить помощь от сообщества SO, я бы посоветовал вам включить любой код, который вы пытались сделать до сих пор. – SpencerD

+0

Мы здесь, чтобы помочь вам преодолеть определенные проблемы, с которыми вы столкнулись при попытке решить проблему, а не дать вам код, чтобы вам не пришлось пытаться его решить в первую очередь. Как и всегда, начинайте, забывая, что это проблема программирования. Если вам нужно было написать инструкции для кого-то, чтобы выполнить эту задачу с помощью ручки и бумаги, не могли бы вы это сделать? Конечно, можно. Это не займет никакого опыта программирования. Итак, продолжайте и делайте это. Как только вы закончите, вы можете написать код для реализации этих инструкций. – jmcilhinney

ответ

0

Поскольку в вашем вопросе отсутствует исходный код, я действительно не уверен точно, как должен выглядеть макет, я могу только предложить некоторые советы/предложения.

Я бы рекомендовал создать ваш элемент управления списком, ввести текстовое поле и кнопку, чтобы добавить имена в список. В дополнение к этим, однако, также добавьте прокручиваемую панель. (Не знаете, какой именно термин для этого элемента управления находится в VB.net, это было давно, так как я работал с этим языком.) Поскольку это похоже на переменное количество элементов на панели, когда пользователь переходит к генерации списка имен, я хотел бы использовать следующий грубый псевдокод:

Dim OutputTexts As New ArrayList ' This is only here if you want to work with these textboxes later 
Private Sub CreateOutput() Handles btnGenerate.Click 
    pOutputPanel.Controls.Clear() 
    OutputTexts.Clear() 
    Dim NextX As Integer = 0 ' Pretty much unnecessary value, but included in case you want to mess with this 
    Dim NextY As Integer = 0 
    For i As Integer = 0 To Convert.ToInt32(txtWeekCount.Text) 
     Dim txtName As New TextBox 
     txtName.Text = lbNameList.Item(i Mod lbNameList.Items.Count) 
     txtName.Location = new Point(NextX, NextY) ' Play with this as necessary 
     NextY += 50 ' Play with this as necessary 
     OutputTexts.Add(txtName) 
     pOutputPanel.Controls.Add(txtName) 
    Next 
End Sub 

Опять же, это очень псевдокод, так что я бы не поощрять копирования и вставки, но дать ему читать, убедитесь, вы все это понимаете, а затем попробуйте реализовать что-то подобное. Там может быть более простой способ сделать это, но я не запрограммирован в VB.NET, вероятно, более 2 лет (по крайней мере). Тем не менее, самое главное здесь следующая строка: lbNameList.Item(i Mod lbNameList.Items.Count). В соответствии с Mod, указав переменную индексации, вы будете последовательно обращаться к пунктам, а затем повторять с начала сбора элементов списка ListBox i находится за пределами допустимого диапазона.

Я также рекомендовал бы динамически генерировать элементы управления TextBox по мере необходимости, а не вручную добавлять 50 или более элементов управления TextBox.

Смежные вопросы