Announcement

Collapse
No announcement yet.

switch(true) !?!?

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

  • switch(true) !?!?

    hallo,

    ich habe ein problem und zwar
    möchte ich aus einer toolbar
    einen button per drag & drop
    auf ein panel ziehen.

    hierfür gehe ich wie folgt vor:

    ich fange das event "MouseDown"
    der toolbar ab und muss jetzt herausbekommen
    um welchen Button es sich handel
    das wollte ich gerne an hand der position
    machen.(da ich nicht weiß wie es sonst funktioniert )

    ich erzeuge mir aus dem "object sender" meine toolbar und aus dem "System.Windows.Forms.MouseEventArgs e"
    meine aktuelle position.

    anschliessend erzeuge ich mir verschiedene bool variable die mir aus dem buttonarray der ToolBar sagen ob meine aktuelle position sich auf dem Button befindet.

    soweit so gut!

    allerdings wenn ich jetzt mein "switch(true)"
    einbauen möchte und meine erzeugten bool variablen prüfen möchte, bringt der compiler die fehlermeldung.

    "Ein Konstantenwert wird erwartet"

    was mache ich falsch, oder wie kann ich es besser machen?

    hier der quellcode:

    private void toolBar1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
    {

    ToolBar lt = (ToolBar)sender;

    System.Drawing.Point point = new Point(e.X,e.Y);


    bool e = lt.Buttons[0].Rectangle.Contains(point);

    bool d = lt.Buttons[1].Rectangle.Contains(point);


    switch(true)
    {

    case e:

    MessageBox.Show("frei");
    break;

    case d:

    MessageBox.Show("datum");
    break;

    }

    }

    danke im voraus

    gruß michael

  • #2
    Hallo,

    >.."Ein Konstantenwert wird erwartet" was mache ich falsch...

    die case-Anweisung kann nur einen feststehenden Wert prüfen, aber zur Kompilierungszeit steht der Wert von <i>e</i> und <i>d</i> noch nicht fest. Anstelle der bool-Variable sollte die switch-Anweisung auf feststehende int-Werte prüfen, wobei über if-Abfragen nach <i>lt.Buttons[0].Rectangle.Contains(point);</i> der "aktuelle" Vergleichswert ermittelt werden kann (wobei man dann die switch-Anweisung gleich einsparen könnte)

    Comment


    • #3
      erstmal danke

      ich verstehe dass diese switch-anweisung nur const werte prüft.
      ich dachte nur da gibt es ein work-arround um aus diesen bool variablen evtl. einen const wert zu machen, bei c++ ging das doch in dem man diese werte als const parameter in eine function übergab.
      denn stell dir mal vor ich habe 20 buttons in der toolbar und muss diese alle mit if vergleichen da wäre ein switch bestimmt die elegantere lösung.

      eine andere frage hab ich auch noch.

      gibt es eine möglichkeit den designermodus für z.b. eine textbox zur laufzeit zur verfügung zu stellen?
      also das man mit der maus die ecke der textbox packt um die grösse zu ändern usw.

      gruß michae

      Comment

      Working...
      X