Соединить элементы двух 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д