Announcement

Collapse
No announcement yet.

Formulare & Zeichnung

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

  • Formulare & Zeichnung

    Hi an alle!
    Ich soll ein Formular erstellen wo man Rechtecke bzw. Kreise erstellen soll.
    Der enthält den Button "hinzufügen". Der soll allerdings
    nach anklicken des Buttons ein 2. Formular öffnen und die größe eines Rechtecke bzw. Kreises abfragen, die gewünscht ist.
    Ich komme nur soweit das ich im 1. Formular zeichnen kann, aber weiter leider noch nicht.

    Link wie es aussehn sollte: http://img366.imageshack.us/img366/153/62709276qa7.jpg

    Hier mein Kompletter kleiner Code =):
    Code:
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    
    namespace Graphic
    {
      public partial class Form1 : Form
      {
        private Rechteck rect = new Rechteck();
        private Graphics g;
    
        private List<Rechteck> rectListe = new List<Rechteck>();
    
    
        
        private bool mousedown = false;
        public Form1()
        {
          InitializeComponent();
          g = pnlZeichenfläche.CreateGraphics();
          
        }
    
        private void pnlZeichenfläche_Paint(object sender, PaintEventArgs e)
        {
          // neu zeichnen (z.B. nach Minimieren)
          foreach (Rechteck r in rectListe)
               r.zeichnen(e.Graphics);
        }
    
        private void pnlZeichenfläche_MouseUp(object sender, MouseEventArgs e)
        {
          mousedown = false;
          rectListe.Add(rect);
        }
    
        private void pnlZeichenfläche_MouseDown(object sender, MouseEventArgs e)
        {
          // Determine the initial rectangle coordinates...
    
          rect = new Rechteck(Color.Yellow);
          rect.Rahmen = 2;
       
          rect.X = e.X;
          rect.Y = e.Y;
          mousedown = true;
    
         
         
        }
    
        private void pnlZeichenfläche_MouseMove(object sender, MouseEventArgs e)
        {
          if (mousedown)
          {
              rect.löschen(g, pnlZeichenfläche.BackColor);
              try
              {
                  rect.Width = e.X - rect.X;
                  rect.Height = e.Y - rect.Y;
                  rect.zeichnen(g);
              }
              catch (Exception ex)
              {
                  mousedown = false;
                  MessageBox.Show(ex.Message);
              }
          }
        }
    
    		private void Form1_Load(object sender, EventArgs e)
    		{
    
    		}
    
    		private void Hinzufügen_Click(object sender, EventArgs e)
    		{
    
    		}
    
    		private void Hintergrund_Click(object sender, EventArgs e)
    		{
    
    		} 
    
    		private void löschen_Click(object sender, EventArgs e)
    		{
    
    		} 
    		private void Allelöschen_Click(object sender, EventArgs e)
    		{
    
    		}   
    
      }
    }

  • #2
    Originally posted by BastiFantasti View Post
    Hi an alle!
    Ich soll ein Formular erstellen wo man Rechtecke bzw. Kreise erstellen soll.
    Der enthält den Button "hinzufügen". Der soll allerdings
    nach anklicken des Buttons ein 2. Formular öffnen und die größe eines Rechtecke bzw. Kreises abfragen, die gewünscht ist.
    Du benötigst natürlich ein zweites Formular.

    Den folgende Text hatte ich zuerst geschrieben und erst danach das Bild angeschaut: Dort fügst Du Controls ein, die die gewünschten Eingaben ermöglicht. Je nach Wunsch oder Aufgabenstellung passen dazu:
    • eine ComboBox/ListBox/GroupBox (mit RadioButtons) mit den Auswahlmöglichkeiten "Rechteck" und "Kreis"
    • mehrere Panels, die übereinander liegen und von denen je nach Auswahl in der ComboBox genau eines sichtbar wird (es gibt natürlich noch andere Lösungswege...)
    • für jedes Panel die passenden Labels und Eingabemöglichkeiten; dazu empfehle ich NumericUpDown oder MaskedTextBox (denn es dürfen ja nur numerische Werte eingegeben werden)

    Das ist Dir offensichtlich alles klar. Der entscheidende Punkt ist: Du benötigst zusätzliche Eigenschaften im zweiten Formular, mit denen Du dem ersten Formular die Auswahl angibst; zum Beispiel:
    Code:
    public int Selection {
      get { return ComboBox.SelectedIndex; }
    }
    public double Value1 {
      get { return NumericBox1.Value; }
    }
    public double Value2 {
      get { return NumericBox2.Value; }
    }
    Im Hauptformular fragst Du dann die Eingaben ab:
    Code:
    private void Hinzufügen_Click(object sender, EventArgs e)
    {
      using(Form2 form2 = new Form2()) {
        if (form2.ShowModal().DialogResult == DialogResult.OK) {
            switch(form2.Selection) {
              case 0:
                //  registriere Rechteck-Breite/Höhe
                //  erzeuge dieses Rechteck
                break;
             //  usw.
            }
        }
      }
    }
    Bei Unklarheiten hilft Dir zunächst die SDK-Doku weiter.

    Viel Erfolg! Jürgen

    Verdammt, immer diese wiederholten Posts in zwei oder mehr Foren: Da hast Du doch seit 10:11 Uhr unter mycsharp.de Antworten erhalten; und ich mühe mich hier ab, das Gleiche nochmal neu zu formulieren.
    Zuletzt editiert von Jürgen Thomas; 26.10.2007, 11:59. Reason: Ärger über doppelte Posts

    Comment

    Working...
    X