Sčítání časů ve sloupci LISTVIEWu + ukázka kódu   zodpovězená otázka

VB.NET, WinForms

Zdravím přátelé,

úspěšně pokračuji se svojí aplikací a došel jsem do části, kdy mám ListBox s několika sloupci.

V prvním sloupci je datum - OK

v dalších sloupcích je čas (většinou v řádkách minut a sekund)

nyní chci udělat součet všech časů v uvedeném sloupci a jelikož je třída DateTime pro mě - nevím proč ale nějak moc složitá, či jsem ji ještě nepřišel na chuť či na kořínek - jak to kdo bere, vyřešil jsem problém prozatím takto:

        Dim text1 As Date
        Dim hodin As Integer
        Dim minut As Integer
        Dim vterin As Integer
        For x As Integer = 0 To ListView1.Items.Count - 1
            text1 = ListView1.Items(x).SubItems(1).Text
            vterin += text1.Second
            If vterin > 60 Then
                vterin = vterin - 60
                minut += 1
            End If

            minut += text1.Minute
            If minut > 60 Then
                minut = minut - 60
                hodin += 1
            End If

            hodin += text1.Hour

        Next

        TextBox1.Text = hodin & ":" & minut & ":" & vterin

Takto mi ten kód funguje, ale zdá se mi to takové humpolácké řešení.

Měl by někdo nějaký čistší návrh? Předem děkuji.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
            TimeSpan tsSum = new TimeSpan();
            TimeSpan ts = new TimeSpan();

            foreach (ListViewItem li in listView1.Items) 
            {
                TimeSpan.TryParse(li.SubItems[1].Text, out ts);
                tsSum += ts;
            }

            TextBox1.Text = tsSum.Hours.ToString() + ":" + tsSum.Minutes.ToString() + ":" + tsSum.Seconds.ToString();

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Vřelé díky.

Překlad do vb.net

Dim tsSum As TimeSpan
        Dim ts As TimeSpan

        For Each li As ListViewItem In ListView1.Items
            TimeSpan.TryParse(li.SubItems(1).Text, ts)
            tsSum += ts
        Next

        If tsSum.Minutes.ToString < 10 And tsSum.Seconds.ToString < 10 Then
            TextBox2.Text = tsSum.Hours.ToString & ":0" & tsSum.Minutes.ToString & ":0" & tsSum.Seconds.ToString

        ElseIf tsSum.Minutes.ToString < 10 And tsSum.Seconds.ToString >= 10 Then
            TextBox2.Text = tsSum.Hours.ToString & ":0" & tsSum.Minutes.ToString & ":" & tsSum.Seconds.ToString

        ElseIf tsSum.Minutes.ToString >= 10 And tsSum.Seconds.ToString < 10 Then
            TextBox2.Text = tsSum.Hours.ToString & ":" & tsSum.Minutes.ToString & ":0" & tsSum.Seconds.ToString

        Else
            TextBox2.Text = tsSum.Hours.ToString & ":" & tsSum.Minutes.ToString & ":" & tsSum.Seconds.ToString

        End If

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback