applicatie stopt na een taal check.

Status
Niet open voor verdere reacties.

Kees987

Gebruiker
Lid geworden
24 dec 2011
Berichten
12
ik kom er helaas niet helemaal uit.

wat heb ik gedaan:
ik heb een bestandje aangemaakt welke "settings.ini" heet
daarin staat o.a.: languish = NL

wat ik nu wil laten gebeuren is, dat als hij ziet dat er "NL" staat, hij dan de knop invult met de tekst "naam:" en als er EN staat dat hij dan "name:" invult.

de code zoals hieronder geeft geen error, en geeft ook geen melding bij de-buggen.
echter, als "knoppenCheck();" laat uitvoeren bij het starten, gebeurd er gewoonweg niets.
laat ik het weg, dan start hij gewoon, echter dan is er dus geen check voor de taal.

ik zie gewoon echt niet wat er hier fout gaat.
heeft er iemand nog een suggestie, of ziet iemand wat ik fout doe ?

Code:
public partial class MainWindow : Window
    {

        string Taal(string p)
        {

            //UITLEZEN HET BESTAND Settings.ini
            var dic = File.ReadAllLines("Settings.ini")
             .Select(l => l.Split(new[] { '=' }))
             .ToDictionary(s => s[0].Trim(), s => s[1].Trim());

            //uitlezen van  de parm. languish
            string languish = dic["languish"];
            p = languish;

            return p;
        }


        public MainWindow()
        {
            InitializeComponent();

            knoppenCheck();


        }

        private void knoppenCheck()
        {
            
            string T = Taal("x");
            //IF set to dutch, name button
            if (T == "NL")
            {
                knopRekentabel.Content = "naam:";
            }
            //IF set to English, name button
            else if (T == "EN")
            {
                knopRekentabel.Content = "name:";
            }
            else
            {
                MessageBox.Show("Bug..");
            }
        }
    }
 
alweer gevonden wat er fout ging.

ik had wat comment regels geplaatste in de settings.ini en daar liep dus alles in de war.

vraag is dan gelijk: wat is de beste manier om parameters uit een ander bestand in te laten lezen ?
via xml ? of gewoon een txt bestand ?

iemand die er een mooi voorbeeldje van heeft toevallig ?
 
aah kijk,
dat was precies wat ik zocht.

echter, nu had ik een vraagje over het volgende stuk code (mogelijk komt dit verderop in mijn boek aan bod, en loop ik wat vooruit op mijn geëxperimenteer)

[CPP]public MainWindow()
{
InitializeComponent();

//check to see what languish to use
string Languish = Properties.Settings.Default.Lang;
string exitmessage = "";

switch (Languish)
{

//WE Dont set a case for english, that will be default.

case "NL":
//Set Buttons to Dutch
//....

//temp store this message in the settings
exitmessage = "Weet u zeker dat u wilt afsluiten?";
Properties.Settings.Default.exitMessage = exitmessage;
break;

default:
//Set buttons to English
//....


//temp store this message in the settings
exitmessage = " Are you sure you want to Quit ?";
Properties.Settings.Default.exitMessage = exitmessage;
break;
}


}








public void buttonQuit_Click(object sender, RoutedEventArgs e)
{


var message = Properties.Settings.Default.exitMessage;
var title = "Exit";
var result = MessageBox.Show(
message, // the message to show
title, // the title for the dialog box
MessageBoxButton.YesNo, // show two buttons: Yes and No
MessageBoxImage.Question); // show a question mark icon

// lets see what has been pressed
switch (result)
{

case System.Windows.MessageBoxResult.Yes: // Yes button pressed
this.Close();
break;

case System.Windows.MessageBoxResult.No: // No button pressed
break;

default: // Neither Yes nor No pressed (just in case)
MessageBox.Show("Oh noes! What did you press?!?!");
break;
}
}[/CPP]


omdat ik bij de knop buttonQuit, niet bij de parameter exitmessage kon komen, welke ik dus al in de main window laat instellen, heb ik er gebruik van gemaakt deze in de settings te laten opslaan.
dit werkt.

nu vraag ik me alleen af of dit qua programmeren wel de juiste nette manier is om dit te doen.
tenslotte moet het ook wel netjes geschreven zijn vind ik zelf.

alvast bedankt
 
Laatst bewerkt:
Als ik me niet vergis moet je niet messageboxresult gebruiken maar dialogResult? ik zal het ff testen voor je mom.
 
Net even gekeken maar weet niet hoe je aan de namespace System.Windows.MessageBoxResult komt. Deze bestaat bij mij namelijk niet:

[cpp]

var message = "somemmessage";
var title = "Exit";
var result = MessageBox.Show(
message, // the message to show
title, // the title for the dialog box
MessageBoxButtons.YesNo, // show two buttons: Yes and No
MessageBoxIcon.Question); // show a question mark icon

// lets see what has been pressed
switch (result)
{

case DialogResult.Yes: // Yes button pressed
this.Close();
break;

case DialogResult.No: // No button pressed
break;

default: // Neither Yes nor No pressed (just in case)
MessageBox.Show("Oh noes! What did you press?!?!");
break;
}

[/cpp]
 
ik probeerde eerst met die "DialogResult.Yes" te werken maar dat kende hij niet. (Visual c# express 2010)
toen ik er dus "System.Windows.MessageBoxResult.Yes" van maakte werkte hij pas wel.

bij settings heb ik een WPF form en dan framework 4 Client Profile.
(mijj OS: windows 7)

die var "var message = "somemmessage";"
had ik in 1e instantie, echter wil ik deze dus taal afhankelijk maken, vandaar dat ik dus al in de main window deze als een parameter wil laten vastzetten.
idee erachter was dat ik dan hier makkelijk lijstjes van allemaal parameters kan maken en daar allemaal de talen instellen.
dit zou dan gemakkelijker moeten zijn om later weer talen toe toe voegen leek mij, want dan hoe je niet overal door de code te zoeken naar stukjes taal.

vandaar dat ik dit nu had opgelost do bij de settings een parameter te maken "exitMessage"
en deze dan in te stellen in de main window.

exitmessage = "Weet u zeker dat u wilt afsluiten?";
Properties.Settings.Default.exitMessage = exitmessage;

verderop kan ik dan de exitmessage aanroepen, welke binnen main dus al als juiste taal staat.

ehter vroeg ik me sterk af of dit wel de juiste, nette manier is om dit in c# te doen.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan