Operowaniem formantem listy

Transkrypt

Operowaniem formantem listy
Microsoft Visual Basic 2008 Express Edition, r. ak. 2014/2015
Formant ListBox. Instrukcja cyklu For ... Next. Pasek menu formularza
Projekt formularza po lewej, po prawej – wykonane obliczenie średniej i włączone sortowanie):
Struktura menu:
Kod w module formularza
Public Class frmLista
'
'
Formant listy,
'
i instrukcja cyklu.
Rok ak. 2014/2015
'
Private Sub mnuZakoncz_Click(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles mnuZakoncz.Click
End
End Sub
Private Sub WyczyscWynik()
'
txtWynik.Text = ""
lblTytul.Text = ""
End Sub
Private Sub mnuDodaj_Click(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles mnuDodaj.Click
'
lstLista.Items.Add(txtNowy.Text)
Call WyczyscWynik()
End Sub
Private Sub mnuUsun_Click(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles mnuUsun.Click
'
Dim strKom, strTyt As String
'
If lstLista.SelectedIndex <> -1 Then
lstLista.Items.RemoveAt(lstLista.SelectedIndex)
Call WyczyscWynik()
Else
strKom = "Nie zaznaczono elementu do usunięcia"
strTyt = "Usuwanie elementu listy"
MessageBox.Show(strKom, strTyt, _
MessageBoxButtons.OK, MessageBoxIcon.Information)
End If
End Sub
Private Sub lstLista_SelectedIndexChanged(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles lstLista.SelectedIndexChanged
'
If lstLista.SelectedIndex >= 0 Then
txtZaznaczony.Text = lstLista.SelectedItem
Else
txtZaznaczony.Text = ""
End If
End Sub
Private Sub mnuWyczysc_Click(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles mnuWyczysc.Click
'
Call WyczyscWynik()
txtNowy.Clear()
txtZaznaczony.Clear()
lstLista.Items.Clear()
End Sub
Private Sub mnuSortuj_Click(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles mnuSortuj.Click
'
lstLista.Sorted = mnuSortuj.Checked
If lstLista.Sorted Then
lstLista.BackColor = Color.LightBlue
Else
lstLista.BackColor = Color.White
End If
End Sub
Private Sub mnuMax_Click(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles mnuMax.Click
'
Dim strMax As String
Dim i As Integer
Dim strKom, strTyt As String
'
If lstLista.Items.Count > 0 Then
strMax = lstLista.Items(0) ' zakładamy, że pierwszy element jest największy
For i = 1 To lstLista.Items.Count - 1
' badanie listy od DRUGIEGO elementu
If lstLista.Items(i) > strMax Then
strMax = lstLista.Items(i)
End If
Next
lblTytul.Text = "Największy element listy"
txtWynik.Text = strMax
Else
strKom = "Lista jest pusta"
strTyt = "Brak danych"
MessageBox.Show(strKom, strTyt, _
MessageBoxButtons.OK, MessageBoxIcon.Information)
End If
End Sub
Private Sub mnuSrednia_Click(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles mnuSrednia.Click
'
Dim sngSuma As Single, intLNum As Integer
Dim i As Integer
Dim strKom, strTyt As String
'
Try
intLNum = 0
sngSuma = 0.0
For i = 0 To lstLista.Items.Count – 1
' przeszukujemy listę od PIERWSZEGO
If IsNumeric(lstLista.Items(i)) Then
' elementu
intLNum = intLNum + 1
sngSuma = sngSuma + CSng(lstLista.Items(i))
End If
Next
If intLNum > 0 Then
lblTytul.Text = "Wartość średnia elementów numerycznych:"
txtWynik.Text = (sngSuma / intLNum).ToString
Else
strKom = "Na liście brak elementów numerycznych"
strTyt = "Obliczanie wartości średniej"
MessageBox.Show(strKom, strTyt, _
MessageBoxButtons.OK, MessageBoxIcon.Information)
End If
Catch ex As Exception
strKom = ex.Message
strTyt = "Obliczanie wartości średniej"
MessageBox.Show(strKom, strTyt, _
MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub
End Class