Соединить элементы двух ListBox и записать в Label - Visual Basic .NET
Формулировка задачи:
Всем доброго здоровичка!!! Помогите пожалуйста с программой:
На форме 2 листбокса. Они заполняются случайно из массивов. В 1-м лб половина слова, во 2-м лб 2-я половина слова. Во 2-м лб слова перемешиваются случайно, чтобы не была видна связь слов. Человек выбирает слово из 1-го лб, выбирает слово из 2-го лб. Рядом с лб есть лейблы. Кнопка склеивает и получается новое слово, удаляет их из лб1 и лб2 и помещает новое слово в очередной лейбл. Теперь проблемы:
1) как сделать запись нового слова в очередной лейбл?
2) после удаления, во 2-м лейбле слова становятся правильно под первые слова, а надо их опять перемешать.
3) программа смотрит новое слово в массиве и если правильно, меняет цвет фона на зелёный, если нет - красный.
Программу выкладываю. Заранее спасибо!!!
Решение задачи: «Соединить элементы двух ListBox и записать в Label»
textual
Листинг программы
- Public Class Form2
- Private wrd1() As String
- Private wrd2() As String
- Private arr() As String
- Private arr1() As String
- Private arr2() As String
- Private iStart, iCount As Integer
- Private Sub Form2_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
- 'каким то образом формируем базовые массивы wrd1, wrd2 (например считываем из файла)
- Dim ss1, ss2 As String
- ss1 = "трек бор мони диск пол след буй вино град ком кон радио ком фа"
- ss2 = "бол ода тор овод оса опыт вол град ус пас курс узел пресс соль"
- ss1 &= " 1трек 1бор 1мони 1диск 1пол 1след 1буй 1вино 1град 1ком 1кон 1радио 1ком 1фа"
- ss2 &= " бол1 ода1 тор1 овод1 оса1 опыт1 вол1 град1 ус1 пас1 курс1 узел1 пресс1 соль1"
- ss1 &= " 2трек 2бор 2мони 2диск 2пол 2след 2буй 2вино 2град 2ком 2кон 2радио 2ком 2фа"
- ss2 &= " бол2 ода2 тор2 овод2 оса2 опыт2 вол2 град2 ус2 пас2 курс2 узел2 пресс2 соль2"
- ss1 &= " 3трек 3бор 3мони 3диск 3пол 3след 3буй 3вино 3град 3ком 3кон 3радио 3ком 3фа"
- ss2 &= " бол3 ода3 тор3 овод3 оса3 опыт3 вол3 град3 ус3 пас3 курс3 узел3 пресс3 соль3"
- wrd1 = ss1.Split(" "c)
- wrd2 = ss2.Split(" "c)
- iStart = 0 : iCount = 14
- setActiveArrs(iStart, iCount)
- End Sub
- Private Sub Mix(ByVal list As String())
- If list Is Nothing Then Exit Sub
- Dim rnd As New Random
- For I As Integer = list.Count - 1 To 0 Step -1
- Dim j As Integer = rnd.Next(0, I + 1)
- Dim temp As String = list(I)
- list(I) = list(j)
- list(j) = temp
- Next
- End Sub
- Private Sub setActiveArrs(ByVal jStart As Integer, ByVal jCount As Integer)
- If jStart + jCount - 1 > wrd1.Length - 1 Then Exit Sub
- ReDim arr(iCount - 1) : ReDim arr1(iCount - 1)
- Array.Copy(wrd1, jStart, arr, 0, jCount)
- Array.Copy(wrd2, jStart, arr1, 0, jCount)
- ReDim arr2(arr1.Length - 1)
- Array.Copy(arr1, arr2, arr1.Length)
- Mix(arr2)
- ListBox1.DataSource = Nothing
- ListBox2.DataSource = Nothing
- ListBox1.DataSource = arr
- ListBox2.DataSource = arr2
- ListBox1.SelectedIndex = 0
- ListBox2.SelectedIndex = 0
- End Sub
- Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
- Dim i1 As Integer = ListBox1.SelectedIndex
- Dim s1 As String = ListBox1.SelectedItem
- Dim s2 As String = ListBox2.SelectedItem
- Dim ss2 As String = arr1(i1)
- TextBox1.Text &= s1 & s2 & vbCrLf
- If s2 = ss2 Then
- TextBox1.BackColor = Color.LightGreen
- Else
- TextBox1.BackColor = Color.MistyRose
- End If
- If CheckBox1.Checked Then
- 'будем удалять отработавшую строку из первого списка
- ListBox1.DataSource = Nothing
- arElementDel(arr, i1)
- arElementDel(arr1, i1)
- ListBox1.DataSource = arr
- End If
- End Sub
- Private Sub arElementDel(ByRef rr() As String, ByVal ii As Integer)
- Array.Copy(rr, ii + 1, rr, ii, UBound(rr) - ii)
- ReDim Preserve rr(rr.Length - 2)
- End Sub
- Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
- iStart += iCount
- setActiveArrs(iStart, iCount)
- End Sub
- End Class
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д