Jeg har et problem som jeg håber at kan få lidt hjælp til. Jeg har en textbox hvori jeg vil beregne en total ud fra nogle andre textboxe. Jeg har en textbox der hedder antal, rabat og pris pr/stk. Regnestykket for totalen skal se således ud:
(antal*pris)-((antal*pris)*rabat)
Problemet er ikke at regne det ud for en eneklt textbox. Jeg har en masse textboxe som er sat op i samme rækkefølge (pris, antal, rabat,pris ialt). Men jeg vil gerne undgå at komme til at lave en KÆMPE løkke for at få beregnet alle boxene.
Der er dog nogle problemer med den. Hvis et af felterne ikke er udfyldt så bliver det null og programmet fejler. (I må gerne komme med en løsning på dette også :) Jeg vil så gerne have hjælp til at programmet generelt udregner for hvert felt (tbPris1, tbPris2, tbPris3, ........ tbPrisn), hvis nogetr er indtastet i nogle af felterne.
Håber det er forståeligt! Og håber i kan hjælpe, om end så bare med en lille del af det. Alt vil være til stor hjælp!
Tak for jeres svar. Kan godt se ideen med at tjekke det først. Men problemet er at man kan oprette uendelig mange tekstboxe, så det bliver lidt omfattende. Jeg havde tænkt mig noget i stil med at tjekke navnet på texboxen, og tælle dem, noget i stil med dette:
for(int i = 0; i < antal textboxe ; i++) { (decimal.Parse(tbAntal + i.Text)* decimal.Parse(tbPrisStk + i.Text))-(((decimal.Parse(tbAntal + i.Text)* decimal.Parse(tbPrisStk + i.Text))*decimal.Parse(tbRabat + i.Text))).ToString("0.00"); }
Så bare for hver textbox. Men ved ikke om en sådan en funktion eller løsning overhovedet er mulig. ved godt denne kode ovenfor overhovedet ikke er mulig. Men det er for at illustrere mit problem :)
Havde sat en } for meget og forkert. Og der skulle lige tilføjes en
decmial amount = 0;
Men nu er problemet væk med null.. Men mit egentlige problem er at jeg har ligesom i excel, en masse linjer bestående af 5 textboxe i hver. tbPris1, tbPris2 ..... osv. er der hvor det hele skal ligges sammen. Men skal jeg så lave en funktion for hver enkelt felt, altså en:
private string udregn() { ClearEmpty(this); return ((decimal.Parse(tbAntal.Text)* decimal.Parse(tbPrisStk.Text))-(((decimal.Parse(tbAntal.Text)* decimal.Parse(tbPrisStk.Text))*decimal.Parse(tbRabat.Text)))).ToString("0.00"); } Med alle textbox navnene, eller kan jeg lave en form for tæller der tæller navnet på textboxen, da jeg nu har kaldt dem tbPris1, tbPrsi2.....?
Kalp, Må jeg sende dig en beskrivelse med billeder og tekst til dig så jeg kan forklare mit problem? Og du kender helt sikkert en nemmere metode til at løse mit problem på! Og den kode du lig har sendt sender:
System.NullReferenceException was unhandled textbox.Text = "0"; ---> Object reference not set to an instance of an object.
:) og det er if (string.IsNullOrEmpty(textbox.Text)) og ikke
if(string.IsEmptyOrNull(textbox.Text)) ;)
Men skriver stadig 0 i resten af boxene. Men må jeg sende dig en beskrivelse af mit problem med billeder og tekst til dig på mail evt? For er virkelig kørt fast, og kan ikke forklare mig ordentligt hvad problemet er?
okay jeg skriver det fra hukommelsen hehe.. jeg er helt med på din problemstilling - som er at den fejler hvis du ikke indtaster noget i en af tekst boksene, men den sidste metode burde ikke skrive "0" i de textboxe som ikke er tomme.. den tjekker jo netop på det:)
så skal det være fordi der er en bug i den "IsNullOrEmpty" og det tvivler jeg på.
Men det var ikke det der var mit problem, og grunden til jeg skrev dette indlæg. Mit problem er:
Jeg har lavet en tabel, kan man sige, af tekstboxe. Jeg har en antal, pris/stk og rabat. Det bliver regnet sammen i en box der hedder pris. Jeg har intet problem med at få det til at virke på én linje, altså med
//Navne på tekstboxe i linjen. tbAntal1 tbStkPris1 tbRabat1
//Navne på tekstboxe i linjen. tbAntal2 tbStkPris2 tbRabat2
og så videre med det antal linjer der er oprettet. (17 i mit tilfælde).
Så var problemet om jeg skal lave den udregning for hvert eneste felt (tbPris 1,2,3....) eller om jeg kan lave en løkke som bare sætter et tal bagpå f.eks tbStkPris + tal +. Så når brugeren indtaster informationerne i textboxene regner den automatisk resultatet i tbPris(n). Så har jeg en box hvori der bliver regner summen af alle tbPris som hedder tbIalt. Håber det er til at forstå, men det er virkelig nemmere at forstå med et billede!
jeg bliver lige nød til, at tænke over den.. jeg arbejder primært med ASP.NET hvor man kan lave FindControl og på den måde finde elementer smart. men det samme gælder ikke lige for Windows forms..
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.