Announcement

Collapse
No announcement yet.

MS Chart V3.5 SP1

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

  • MS Chart V3.5 SP1

    Hallo zusammen,

    ich habe das Chart als ganzes Objekt an ein PropertyGrid angehängt.
    Funktioniert soweit super, alle Eigenschaften des Charts können verändert werden.
    Wird nun vom User eine falsche Eingabe gemacht, kann ich die Exception mit try/catch nicht abfangen, die App schließt...

    Der User sollte die Möglichkeit bekommen den falschen Eintrag zu ändern.


    Kann mir da bitte jemand einen Rat geben?

  • #2
    Das PropertyGrid fängt eigentlich Fehleingaben ab und zeigt einen 'ungültiger Eigenschaftwert'-Dialog an. Oder heißt 'falsche Eingabe' bei dir das es ein theoretisch gültiger Wert für ein Chart ist in deinem speziellen Fall aber ungültig und das das ChartingControl eine Exception wirft bei irgendeiner durch die Propertyänderung ausgelösten Aktion?


    Ein PropertyGrid ist übrigens eine schlechte Wahl um ~echte User~ daran zu lassen. Der sollte üblicherweise bestimmt nicht alle Properties eines Controls ändern dürfen.
    Zuletzt editiert von Ralf Jansen; 14.07.2010, 17:41.

    Comment


    • #3
      Hallo Ralf,

      danke für die Antwort.
      Du hast natürlich Recht, dass das nicht die richtige Wahl ist...
      Ich werde das nochmal überdenken, aber meine User wollen fast alle Eigenschaften des Charts ändern...


      ... 'falsche Eingabe' heißt bei mir das es ein theoretisch gültiger Wert für ein Chart ist und in meinem speziellen Fall ungültig ist.
      Es ist z.B. die Property <isLogarithmic>Scale der Xaxis .
      Die ist default auf <false>. Setze ich nun das Prop. auf <true> bekomme ich die Meldung:
      InvalidOperationException: A logarithmic scale cannot be used for this axis.
      Jetzt sollte man einfach die Möglichkeit haben die Prop wieder auf <false> zu setzen. --> geht aber nicht, da ich die Exception mit try/catch nur in der "static void Main" abfangen kann...da ist es aber schon zu spät.
      Ich habe auch schon versucht vom Chart abzuleiten und in der Klasse die Schnittstelle INotifyPropertyChanged implementiert...die Exception wird aber vor meinem Event ausgelöst, so dass ich nicht darauf reagieren kann.
      Das PropertyGrid gibt da auch keine Meldung ab...

      Hast Du mir vielleicht einen Tip, oder einen Designansatz?
      Zuletzt editiert von Franzel; 15.07.2010, 13:35.

      Comment


      • #4
        Hast Du mir vielleicht einen Tip, oder einen Designansatz?
        Nicht wirklich. Wenn die Exception im Setter der Chart Property auftritt dann sollte das PropertyGrid das abfangen und auf dem vorherigen Wert belassen. Wenn die Exception erst später auftritt weil z.B. die Property zwar geändert wird die Exception aber erst beim zeichnen des Controlinhalts auftritt kannst du die zwar abfangen (den Application.ThreadException Event abfangen) aber dein Control sollte hinüber sein. Denn Zustand kennst du wahrscheinlich, wenn das Control als weiße Fläche mit einem roten Kreuz dargestellt wird. Aus diesem Zustand ist, so weit ich weiß, ein Control auch nicht mehr zu retten.

        Am besten erst gar nicht zulassen das ein ungültiger Wert gesetzt wird. Wenn die Property überschreibbar ist einfach mit einem [Browsable(false)] Attribut garnieren. Dann taucht sie nicht mehr im PropertyGrid auf.

        Comment


        • #5
          Hallo Ralf,

          ja, beim Paint-Event ist Endegelände, und Du hast Recht...das Control zeigt das von Dir beschriebene Verhalten.
          Ok, soweit vielen Dank für Deine Mühe.

          Mal schauen wie ich das nun angehe...

          Einen schönen Abend.
          Freundliche Grüße
          Franzel

          Comment

          Working...
          X