Wat doet deze C# code?

Status
Niet open voor verdere reacties.

camperezel

Nieuwe gebruiker
Lid geworden
26 jan 2011
Berichten
4
Hallo, even voorstellen student C#
Mijn vraag kan iemand dit in makkelijke verwoording weergeven wat volgende code is (zie rood gedeelte)
heb er al over gelezen maar geraak er niet uit.
probleem is dat het in mijn prog, werkt als ik het groene gedeelte op true zet werkt.
maar op false niet, dus ik denk dat daar ergens een foutje zit :(
alvast bedankt :thumb:



Code:
private bool ControleInvoer()
      {
            [COLOR="green"]bool functionReturnValue = false;[/COLOR]
                 //Controle of de verplichte velden werde ingevuld
                 //basis: tag-property moet gelijk zijn aan a
   S[COLOR="#8b0000"]ystem.Windows.Forms.Control ThisControl = null;
           try
     {
           foreach (Control ThisControl_loopVariable in this.Controls)
     {
   ThisControl = ThisControl_loopVariable;
            if (Convert.ToString (ThisControl.Tag) == "a")
    {
            if (string.IsNullOrEmpty(ThisControl.Text))[/COLOR]
    {
   MessageBox.Show("Je dient alle verplichte velden" +
            " in te vullen.", "Koekenwinkeltje",
            MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            ThisControl.Focus();
 
Laatst bewerkt door een moderator:
Volgens mij is dit niet de hele code, want ik zie eigenlijk geen reden waarom hij niet zou werken, behalve dat hij niks returned terwijl hij dit wel zou moeten doen.

Enne de code, ik ga ervan uit dat je een Windows Forms applicatie gebruikt;

[cpp]//maakt een nieuwe control aan, dit kan een button/textbox/label etc bevatten.
System.Windows.Forms.Control ThisControl = null;
//probeer een foreach loop uit te voeren met try/catch
try
{
//voor elke control (textbox/button/label/combobox etc etc) in this (je form) .Controls (controls zijn dus die textboxen/buttons bla bla)
foreach (Control ThisControl_loopVariable in this.Controls)
{
//Stop de control van de foreachloop in een Control variabele.
ThisControl = ThisControl_loopVariable;
//Kijk of de Tag de naam ''a'' heeft,
if (Convert.ToString (ThisControl.Tag) == "a")
{
//zoja, kijk of de de text van de control leeg is. (dus bijv. button1.Text = "" is leeg)
if (string.IsNullOrEmpty(ThisControl.Text))[/cpp]


Enne probeer eens van ''private bool'' ''private void'' te maken.
 
Laatst bewerkt:
Ik heb het gisteren nog even uitgetest met de debugger
het stukje van hier boven loopt hij telkens af en geeft een waarde, zodat het niet null is, daarna zou (zie rode tekst op true moeten komen) zodat het programma mijn class aanspreekt en de berekening kan uitvoeren, maar ik zou echt weten hoe ik deze op true kan krijgen , alvast bedankt voor het kijken vanvorige code:)
Mijn ervaring is nog maar een half jaar, dus ik kan de code wel lezen en begrijpen, maar ben nog niet zo sterk om het aan te passen om werkende te krijgen.




Code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Koekenwinkeltje
{
    public partial class frmKoekenwinkeltje : Form
    {

        decimal _Eenheidsprijs;

        public frmKoekenwinkeltje()
        {
            InitializeComponent();
        }

        private bool ControleInvoer()
        {
           bool functionReturnValue = false; // Rudi normaal dit op False
            
            ////Controle of de verplichte velden werde ingevuld
            ////basis: tag-property moet gelijk zijn aan a

            System.Windows.Forms.Control ThisControl = null;
        
          try
          {

 //fout vanaf hier
          foreach (Control ThisControl_loopVariable in this.Controls)
          {
              ThisControl = ThisControl_loopVariable;
              if (Convert.ToString(ThisControl.Tag) == "a")
              {
                  if (string.IsNullOrEmpty(ThisControl.Text))
                  {
                      MessageBox.Show("Je dient alle verplichte velden" +
                      " in te vullen.", "Koekenwinkeltje",
                      MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                      ThisControl.Focus();

                     
                      functionReturnValue = false;
                  }
                  else
                  {
                      functionReturnValue = true;
                  }
              }
          }
                


          }
          catch (Exception ex)
          {
              MessageBox.Show(ex.Message, "Error ControleInvoer",
              MessageBoxButtons.OK, MessageBoxIcon.Error);
          }
         [COLOR="#8b0000"] return functionReturnValue;[/COLOR] // dit zou op true moeten komen , doet dit niet
        }

        //fout tot hier

        public void CheckNumeric(System.Windows.Forms.KeyPressEventArgs e)
        {
            //Controle op numerieke waarden (en backspace)
            int intKeyAscii = Convert.ToInt32(e.KeyChar);
            try
            {
                if ((intKeyAscii < 48 | intKeyAscii > 57))
                {
                    if (intKeyAscii != 8)
                    {
                        e.Handled = true;
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Error CheckNumeric",
                MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }


        private void frmKoekenwinkeltje_Load(object sender, EventArgs e)
        {
            {
                lstKoekje.Items.Add("Betterfood");
                lstKoekje.Items.Add("Vitabis");
                lstKoekje.Items.Add("Pims");
                lstKoekje.Items.Add("Leo");
                lstKoekje.Items.Add("Wafel");
                lstKoekje.Items.Add("Suikerwafel");
                lstKoekje.Items.Add("Antwerps Handje");
                lstKoekje.Items.Add("Chocolade Wafel");
                lstKoekje.Items.Add("Petit Beure");
            }

        }

        private void lstKoekje_Click(object sender, EventArgs e)
        {
            //bepalen v/d eenheidsprijs voor een koekje
            try
            {
                switch (lstKoekje.SelectedItem.ToString())
                {
                    case "Betterfood":
                        _Eenheidsprijs = 0.50M;
                        break;
                    case "Vitabis":
                        _Eenheidsprijs = 0.70M;
                        break;
                    case "Pims":
                        _Eenheidsprijs = 0.60M;
                        break;
                    case "Leo":
                        _Eenheidsprijs = 0.40M;
                        break;
                    case "Wafel":
                        _Eenheidsprijs = 0.80M;
                        break;
                    case "Suikerwafel":
                        _Eenheidsprijs = 0.90M;
                        break;
                    case "Antwerps handje":
                        _Eenheidsprijs = 0.20M;
                        break;
                    case "Chocolade wafel":
                        _Eenheidsprijs = 1.10M;
                        break;
                    case "Petit beure":
                        _Eenheidsprijs = 0.10M;
                        break;
                }
                lblEenheidsprijs.Text = "Eenheidsprijs voor " +
                lstKoekje.SelectedItem + " = € " +
                _Eenheidsprijs;
            }
            catch (NullReferenceException)
            {
                return;
            }
        }

        private void btnBerekenen_Click(object sender, EventArgs e)
        {
                        
            
            
                        //Als alle verplichte waarden werden ingevuld,
                        //kan de berekening worden uitgevoerd
   // Rudi if (txtAantal.Text == "1")

            if (ControleInvoer() == true)
              {
               //MessageBox.Show("hallo");
                
                //instantiëren v/d class
                clsBtw bereken = new clsBtw();

                
                //berekeningen uitvoeren, gebruik makend van de properties
                try
                {
                    
                    bereken.Eenheidsprijs = _Eenheidsprijs;
                    bereken.Percentage = int.Parse(txtBtw.Text);
                    
                    lblResultaat.Text = "Eenheidsprijs incl. BTW: " +
                    bereken.Bereken() + "\nTotaalprijs excl.BTW: " +
                    (_Eenheidsprijs * Convert.ToInt32(txtAantal.Text));
                    //totaal berekenen
                    bereken.Eenheidsprijs = (_Eenheidsprijs *
                    Convert.ToInt32(txtAantal.Text));
                    lblResultaat.Text = lblResultaat.Text +
                    "\nTotaalprijs incl. BTW: " + bereken.Bereken();
                }
                catch (FormatException ex)
                {
                    MessageBox.Show("Format exception\n(" + ex.Message + ")",
                    "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Error Berekenen\n(" + ex.Message + ")",
                    "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
        }

        private void btnReset_Click(object sender, EventArgs e)
        {
            //Leegmaken van de mogelijks ingevulde velden
            //basis: tag-property (a of b)
            System.Windows.Forms.Control ThisControl = null;
            try
            {
                foreach (Control ThisControl_loopVariable in this.Controls)
                {
                    ThisControl = ThisControl_loopVariable;
                    if (Convert.ToString(ThisControl.Tag) == "a" |
                        Convert.ToString(ThisControl.Tag) == "b")
                    {
                        ThisControl.ResetText();
                    }
                }
                lstKoekje.ClearSelected();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Error Reset",
                MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void txtAantal_KeyPress(object sender, KeyPressEventArgs e)
        {
            CheckNumeric(e);
        }

        private void txtBtw_KeyPress(object sender, KeyPressEventArgs e)
        {
            CheckNumeric(e);
        }

        private void btnEinde_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }



    }
}
 
Volgens mij snap ik al wat er gebeurd in de code!

De gebruiker moet alle velden invullen, die een tag van ''a'' hebben. Een tag is een soort van aanwijzer wat wat is.
Ik ga ervan uit dat de textvelden die móeten ingevuld zijn, een tag van ''a'' hebben.
Als er dus 1 van de textboxen die de tag ''a'' heeft niet is ingevuld, springt de variabele op False.
Zodra alle velden wél gevuld zijn, springt de variabele op True.

Verder in de code staat dit:
[cpp]if (ControleInvoer() == true)
[/cpp]
Dus als de controleinvoer True teruggeeft, gaat hij verder met de code. Zoniet, stopt hij met de code.


Snap je het nu een beetje?
 
Het licht begint heel goed te komen,
als ik het goed begrijp moet ik bij eigenschappen van de textbox de tag "a" nog inzetten, zodat de control dit terugkrijgt :) hoop ik:o, ga straks testen

thanks
 
Jep, dat klopt :)
De tag ''a'' moet dus alleen bij de textboxes die vereist zijn, zegmaar die je móet invullen, anders werkt de winkel niet goed :P
 
:thumb::thumb: Progje werkt , hartelijk dank :)

"a" bij tag van eigenschappen textbox gezet .
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan