Announcement

Collapse
No announcement yet.

checkBox.Checked kann nicht gesetzt werden

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • checkBox.Checked kann nicht gesetzt werden

    Hi zusammen,

    ich habe hier ein Problem, mitdem ich mich schon ziemlich lange beschäftige:

    Ich habe eine Benutzeroberfläche (WinForms) welche als Konfigurationsoberfläche dienen soll. Die jeweilligen Werte werden in einer XML-Datei gespeichert.
    Das Funktioniert dann auch und die XML-Datei sieht so aus :
    HTML Code:
    <?xml version="1.0" encoding="UTF-8"?>
    <cxxEditor>
      <!-- Runtime Data for Cxx Editor -->
      <appVersion>1.01.0108</appVersion>
      <versionMajor>1</versionMajor>
      <versionMinor>01</versionMinor>
      <versionBuild>0108</versionBuild>
      <versionStateCode>RTM_Update_Beta</versionStateCode>
      <versionState>Final (Update)</versionState>
      <updateUrl>http://www.kraemer-software.eu/dev/projects/update.php?app=cxxeditor</updateUrl>
      <!-- Settings for User Interface -->
      <UIType>standard</UIType>
      <showMenuBar>True</showMenuBar>
      <showToolBar>True</showToolBar>
      <showStateBar>True</showStateBar>
      <!-- Settings for text processing -->
      <tabType>Tab</tabType>
      <tabs>1</tabs>
      <!-- Settings for file & folder -->
      <pathAppFolder>dat\</pathAppFolder>
    </cxxEditor>
    Allerdings will ich die Einstellungen auch aus der XML laden und die jeweilligen Objekte (Checkbox, ComboxBox (als DropDownList)) auf diesen Wert festlegen.
    Das funktioniert jedoch nicht.
    Ich verwende zum schreiben der XML XmlDocument und zum lesen XmlReader.

    Beim laden des Forms öffne ich die XML mit XmlReader. In einer While-Schleife und mehreren if-Abfragen lese ich die Datei aus und speichere bestimmte werte in Variablen

    [highlight=c#]
    XmlReader reader = XmlReader.Create(appFilePath);
    while (reader.Read())
    {
    switch (reader.NodeType)
    {
    case XmlNodeType.Element:
    {
    if (reader.Name == "UIType")
    {
    reader.ReadStartElement();
    uiType = reader.ReadContentAsString();
    }
    if (reader.Name == "showMenuBar")
    {
    reader.ReadStartElement();
    showMenuBar = reader.ReadContentAsString();
    }
    if (reader.Name == "showToolBar")
    {
    reader.ReadStartElement();
    showToolBar = reader.ReadContentAsString();
    }
    if (reader.Name == "showStateBar")
    {
    reader.ReadStartElement();
    showStateBar = reader.ReadContentAsString();
    }
    if (reader.Name == "tabType")
    {
    reader.ReadStartElement();
    tabType = reader.ReadContentAsString();
    }
    if (reader.Name == "tabs")
    {
    reader.ReadStartElement();
    tabs = reader.ReadContentAsString();
    }
    } break;
    }
    }
    reader.Close();
    [/highlight]

    Anschließend setze ich die jeweilligen Objekte auf die Werte der gespeicherten Variablen. Die 3 Variablen sind Bool-Werte (also entweder true oder false) kann ich warum auch immer nur im string auslesen. Beim setzen der Objekte löse ich das durch eine if-Abfrage. Wo ist der Fehler warum die Objekte nicht gesetzt werden können?

    Vielen Dank für eure Hilfe im vorraus.
    • MS Visual Studio 2010 Ultimate - C# WinForms/WPF
    • Notepad++ - HTML,JavaScript,CSS,PHP
    • Windows 7 Pro

  • #2
    Ich kann hier keine Stelle entdecken die irgendwelche Eigenschaften aus der XML Datei einem UserControl zuweist bzw. aus dem UserControl herausliest. An dieser Stelle würde ich den Fehler vermuten.
    Kannst Du das noch dazu posten bitte? Wird die XML Datei korrekt ausgelesen?

    Comment


    • #3
      Boolean hat wie alle Standarddatentypen eine Parse bzw. TryParse Methode. Mit der kannst du aus dem string einen Boolean bekommen.

      Comment


      • #4
        @Ralf Jansen : Das Problem, String in Bool zu konvertieren ist nicht das Problem. Das habe ich ja bisher mit einer if-abfrage gelöst. das Parse, TryParse werde ich mal ausprobieren .
        @fanderIf : Ich probiere ein bischen mit dem Code herum um eine Lösung zu finden, deshalb kann ich nicht den genauen Code posten, jedoch eine grobe Richtung, die ich benutzt habe.
        Aus dem Codebeispiel oben werden die Werte in Variablen gelesen, direkt danach kommt folgender Code :

        [highlight=c#]
        if (tabs != "")
        textBox1.Text = tabs;

        if (uiType == "standard")
        this.comboBox1.Text = "Standard-Umgebung";
        else if (uiType == "notice")
        this.comboBox1.Text = "Notizblock-Umgebung";

        if (showMenuBar == "True")
        this.checkBox1.Checked = true;
        else
        this.checkBox1.Checked = false;
        [/highlight]

        textBox1 ist eine TextBox, die eine Zahl speichern soll.

        comboBox1 hat den DropDownStyle "DropDownList". So kann der Benutzer nur aus den Vorgaben wählen. Mithilfe von comboBox1.Text soll der angezeigte Text verändert werden. Die beiden Werte "Standard-Umgebung" und "Notizblock-Umgebung" sind die Werte, wie sie exakt in der Item-Auflistung der comboBox stehen.

        checkBox1 ist eine gewöhnliche CheckBox.

        Das sind die Drei Objekte, die ich verwende. von comboxBox gibt es noch eine und von CheckBox noch 2 weitere.

        Die Idee, dass die XML nicht korrekt ausgelesen wird hatte ich auch schon. Dass habe ich mit einer MessageBox.Show(); mit den jeweilligen Variablen gelöst.

        Ich habe allerdings gerade einmal den Code oben in diesem Post eingebaut und .... warum auch immer ... es funktioniert.
        • MS Visual Studio 2010 Ultimate - C# WinForms/WPF
        • Notepad++ - HTML,JavaScript,CSS,PHP
        • Windows 7 Pro

        Comment


        • #5
          Den Debugger kannst Du aber schon bedienen? Da brauchs doch keine messageboxen

          Comment

          Working...
          X