Permalänk
Medlem

Försöker att lära mig. C#

Hallå.

Som Titel säger försöker jag lära mig programmera och av slump så blev det C#. i alla fall så kan jag kanppt göra något än. och har lite problem med en enkel tidtagare och undrar om någon kan rätta vad jag har gjort fel. Och om ni vet någon bra sida där man kan hitta enkla uppgifter eller något sånt.

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace Tidtagarur { public partial class Form1 : Form { DateTime start; public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { button1.Select(); } private void button1_Click(object sender, EventArgs e) { if (button1.Text == "Start") { start = DateTime.Now; timer1.Start(); button1.Text = "Stop"; } else { timer1.Stop(); button1.Text = "Start"; } } private void timer1_Tick(object sender, EventArgs e) { TimeSpan tid = DateTime.Now - start; label1.Text = tid.Minutes.ToString().PadLeft(2, "0") + ":" + tid.Seconds.ToString().PadLeft(2, "0") + ":" + tid.Milliseconds.ToString().PadLeft(3, "0"); } } }

EDIT: Errorn börjar komma upp när jag ska få in timern i texten

TLDR: är inte bra på programmering, vad är fel med min code?

Tack i förhand!

[EDIT] vill undvika att dra tråden till top sidan" så vill bara tacka alla

Permalänk
Medlem
Permalänk
Medlem

skapa en variabel för char:en:
Char nolla = '0';

sen stoppar du in den som argument i PadLeft:
label1.Text = tid.Minutes.ToString().PadLeft(2, nolla) + ":"
+ tid.Seconds.ToString().PadLeft(2, nolla)
+ ":" + tid.Milliseconds.ToString().PadLeft(3, nolla);

Finns många bra sidor för c#, bla social.msdn.com, devx mfl. Men specifika problem löses enklast med google

Visa signatur

Ryzen 3900x, Asus Prime x470, Sapphire 5700xt

Permalänk
Medlem

csharpskolan.se har några fina övningsuppgifter om du vill ha dom på Svenska. Där jag försöker lära mig och tycker dom är hyfsat bra på att förklara iaf

Engelska sidor vet jag inte, google lär ju ha svaret annars.

Visa signatur

AMD Ryzen 9 3900x - MSI Tomahawk x570 Wi-Fi - 32GB Corsair Vengence @ 3200Mhz - MSI GeForce GTX 1070 8GB Gaming X - Corsair Hydro H100x - Några HDD's

Permalänk
Medlem

private void timer1_Tick(object sender, EventArgs e) { TimeSpan tid = DateTime.Now - start; label1.Text = tid.Minutes.ToString() + " : " + tid.Seconds.ToString() + " : " + tid.Milliseconds.ToString(); }

Prova detta, förstår inte varför du börjar använda padding. Borde fungera.

Visa signatur

In order to understand recursion, one must first understand recursion

Permalänk
Medlem

private void timer1_Tick(object sender, EventArgs e) { TimeSpan tid = DateTime.Now - start; label1.Text = tid.Minutes.ToString().PadLeft(2, '0') + ":" + tid.Seconds.ToString().PadLeft(2, '0') + ":" + tid.Milliseconds.ToString().PadLeft(3, '0'); }

Detta är din kod FÖRUTOM att jag ändrat alla "0" till '0'.
PadLeft tar in en int och en char. Det som skrivs innanför två fnuttar (tex "0") är en string, inte en char.
Var det svaret du sökte? Återigen så förstår jag inte poängen med att använda PadLeft men ändå.

Visa signatur

In order to understand recursion, one must first understand recursion

Permalänk
Medlem

label1.Text = tid.ToString("mm:ss:fff");

Gör vad du vill göra med en enda rad.

http://msdn.microsoft.com/en-us/library/system.globalization....

mer hur du formaterar DateTime där.

Visa signatur

Speldator: i7-8700k, 32GB DDR4, RTX2080
Server 1: SB 2500k, MZI -P67GD55, 32GB DDR3, Corsair MX 240GB SSD
Surface Pro 2017, Konsoler: Typ alla, Oculus Rift