C# :: Aufgabe #273

2 Lösungen Lösungen öffentlich

Funktionswerte einer Parabel berechnen - Windows Forms

Anfänger - C# von paddlboot - 04.12.2019 um 16:13 Uhr
Erstelle eine Windows Form, in der Funktionswerte einer Parabel berechnet werden können.
Dafür sollen Start-, Endwert und Schrittweite über Textboxen eingelesen werden und nach dem Betätigen des Berechnen-Buttons die X- und Y-Werte in einer ListBox ausgegeben werden.
Mögliches Aussehen siehe Anhang.

Lösungen:

vote_ok
von Exception (6270 Punkte) - 21.12.2019 um 19:58 Uhr
Form1.cs
Quellcode ausblenden C#-Code
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Windows.Forms;

namespace _273_Parabelrechner
{
    public partial class Form1 : Form
    {
        private static Panel panel_left;
        private static Panel panel_right;
        private static Dictionary<string, int> values;

        public Form1()
        {
            InitializeComponent();
            InitControls();
            values = new Dictionary<string, int>();
        }

        private void InitControls()
        {
            this.Width = 500;
            this.Height = 350;
            this.MaximizeBox = false;
            this.MaximizeBox = false;
            this.FormBorderStyle = FormBorderStyle.Fixed3D;
            this.Text = "273 - Parabelrechner";

            #region left

            panel_left = new Panel();
            panel_left.Width = this.Width / 2;
            panel_left.Height = this.Height;
            panel_left.Location = new Point(0, 0);

            GroupBox g = new GroupBox();
            g.Width = panel_left.Width - 20;
            g.Height = (int)(panel_left.Height - 150);
            g.Text = "X-Werte";
            g.Name = "GroupBox";
            g.Location = new Point(10, 10);

            int x = 10, y = 50;

            Label l = new Label();
            l.Name = "label_Startwert";
            l.Text = "Startwert";
            l.Location = new Point(x, y);

            TextBox tb = new TextBox();
            tb.Name = "textbox_Startwert";
            tb.Width = (int)(g.Width / 2.5);
            tb.Location = new Point(l.Right + 20, l.Top);
            tb.KeyUp += Textbox_Validation;

            g.Controls.Add(tb);
            g.Controls.Add(l);

            y += 50;

            l = new Label();
            l.Name = "label_Endwert";
            l.Text = "Endwert";
            l.Location = new Point(x, y);

            tb = new TextBox();
            tb.Name = "textbox_Endwert";
            tb.Width = (int)(g.Width / 2.5);
            tb.Location = new Point(l.Right + 20, l.Top);
            tb.KeyUp += Textbox_Validation;

            g.Controls.Add(tb);
            g.Controls.Add(l);

            y += 50;

            l = new Label();
            l.Name = "label_Schrittweite";
            l.Text = "Schrittweite";
            l.Location = new Point(x, y);

            tb = new TextBox();
            tb.Name = "textbox_Schrittweite";
            tb.Width = (int)(g.Width / 2.5);
            tb.Location = new Point(l.Right + 20, l.Top);
            tb.KeyUp += Textbox_Validation;

            g.Controls.Add(tb);

            g.Controls.Add(l);

            panel_left.Controls.Add(g);

            Button b = new Button();
            b.Name = "button_berechnen";
            b.Text = "&Berechnen";
            b.Width = panel_left.Width / 2 - 30;
            b.Height = 85;
            b.Location = new Point(10, g.Bottom + 5);
            b.Click += Click_Calculate;

            panel_left.Controls.Add(b);

            b = new Button();
            b.Name = "button_reset";
            b.Text = "&Reset";
            b.Width = panel_left.Width / 2 - 30;
            b.Height = 85;
            b.Location = new Point(g.Right - b.Width, g.Bottom + 5);
            b.Click += Click_Reset;

            panel_left.Controls.Add(b);

            this.Controls.Add(panel_left);

            #endregion

            #region right

            panel_right = new Panel();
            panel_right.Width = panel_left.Width;
            panel_right.Height = panel_left.Height;
            panel_right.Location = new Point(panel_left.Width, 0);

            ListBox lb = new ListBox();
            lb.Name = "listbox";
            lb.Location = new Point(10, 10);
            lb.Width = panel_right.Width - 45;
            lb.Height = panel_right.Height - 60;

            panel_right.Controls.Add(lb);

            this.Controls.Add(panel_right);
            #endregion
        }

        private void Textbox_Validation(object sender, KeyEventArgs e)
        {
            TextBox tb = sender as TextBox;

            int value;

            if(int.TryParse(tb.Text, out value))
            {
                tb.BackColor = default(Color);

                string key = tb.Name.Replace("textbox_", "");

                if (values.ContainsKey(key))
                {
                    values[key] = value;
                }
                else
                {
                    values.Add(key, value);
                }
            }
            else
            {
                tb.BackColor = Color.LightPink;
            }
        }

        private void Click_Calculate(object sender, EventArgs e)
        {
            int startwert, endwert, schrittweite;

            if (!values.TryGetValue("Startwert", out startwert) || !values.TryGetValue("Endwert", out endwert) || !values.TryGetValue("Schrittweite", out schrittweite))
            {
                return;
            }

            ListBox lb = panel_right.Controls.Find("listbox", true).FirstOrDefault() as ListBox;
            lb.Items.Clear();

            lb.Items.Add("Berechnete Werte");
            lb.Items.Add("-------------------------------");

            for (int i = startwert; i <= endwert; i += schrittweite)
            {
                int x = i;
                int y = x * x;
                lb.Items.Add($"X: {x}\tY: {y}");
            }
        }

        private void Click_Reset(object sender, EventArgs e)
        {
            values.Clear();

            ListBox lb = panel_right.Controls.Find("listbox", true).FirstOrDefault() as ListBox;
            lb.Items.Clear();
        }
    }
}


Form1.Designer.cs
Quellcode ausblenden C#-Code
namespace _273_Parabelrechner
{
    partial class Form1
    {
        /// <summary>
        /// Erforderliche Designervariable.
        /// </summary>
        private System.ComponentModel.IContainer components = null;

        /// <summary>
        /// Verwendete Ressourcen bereinigen.
        /// </summary>
        /// <param name="disposing">True, wenn verwaltete Ressourcen gelöscht werden sollen; andernfalls False.</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }

        #region Vom Windows Form-Designer generierter Code

        /// <summary>
        /// Erforderliche Methode für die Designerunterstützung.
        /// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden.
        /// </summary>
        private void InitializeComponent()
        {
            this.SuspendLayout();
            // 
            // Form1
            // 
            this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 20F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.ClientSize = new System.Drawing.Size(251, 39);
            this.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
            this.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
            this.Name = "Form1";
            this.Text = "Form1";
            this.ResumeLayout(false);

        }

        #endregion
    }
}
vote_ok
von Waldgeist (1470 Punkte) - 23.12.2019 um 16:38 Uhr
Hallo,

danke für diese Aufgabe, habe mich zum ersten mal mit der ListBox beschäftigt und viel gelernt.
Ich hoffe das passt so weit :-)

Quellcode ausblenden C#-Code
using System;
using System.Windows.Forms;

namespace Aufgabe_273_Parabel
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }



        private void Reset_Button_Click(object sender, EventArgs e)
        {
            Startwert.Text = "0";
            Endwert.Text = "0";
            Schrittweite.Text = "1";
            listBox1.Items.Clear();

        }



        private void Start_Button_Click(object sender, EventArgs e)
        {
            listBox1.Items.Add("Berechnete Werte");
            listBox1.Items.Add("- - - - - - - - - - - - - - - - -");
            double start = Convert.ToDouble(Startwert.Text);
            double schritt = Convert.ToDouble(Schrittweite.Text);
            double ende = Convert.ToDouble(Endwert.Text);


            for (double i = start; i <= ende; i = i + schritt)
            {
                listBox1.Items.Add(" X-Wert  " + i + "   Y-Wert  " + i * i);
            }
        }
    }
}



Quellcode ausblenden C#-Code
namespace Aufgabe_273_Parabel
{
    partial class Form1
    {
        /// <summary>
        /// Erforderliche Designervariable.
        /// </summary>
        private System.ComponentModel.IContainer components = null;

        /// <summary>
        /// Verwendete Ressourcen bereinigen.
        /// </summary>
        /// <param name="disposing">True, wenn verwaltete Ressourcen gelöscht werden sollen; andernfalls False.</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }

        #region Vom Windows Form-Designer generierter Code

        /// <summary>
        /// Erforderliche Methode für die Designerunterstützung.
        /// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden.
        /// </summary>
        private void InitializeComponent()
        {
            this.groupBox1 = new System.Windows.Forms.GroupBox();
            this.Schrittweite = new System.Windows.Forms.TextBox();
            this.Endwert = new System.Windows.Forms.TextBox();
            this.Startwert = new System.Windows.Forms.TextBox();
            this.label3 = new System.Windows.Forms.Label();
            this.label2 = new System.Windows.Forms.Label();
            this.label1 = new System.Windows.Forms.Label();
            this.listBox1 = new System.Windows.Forms.ListBox();
            this.Start_Button = new System.Windows.Forms.Button();
            this.Reset_Button = new System.Windows.Forms.Button();
            this.groupBox1.SuspendLayout();
            this.SuspendLayout();
            // 
            // groupBox1
            // 
            this.groupBox1.Controls.Add(this.Schrittweite);
            this.groupBox1.Controls.Add(this.Endwert);
            this.groupBox1.Controls.Add(this.Startwert);
            this.groupBox1.Controls.Add(this.label3);
            this.groupBox1.Controls.Add(this.label2);
            this.groupBox1.Controls.Add(this.label1);
            this.groupBox1.FlatStyle = System.Windows.Forms.FlatStyle.Popup;
            this.groupBox1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
            this.groupBox1.Location = new System.Drawing.Point(27, 32);
            this.groupBox1.Name = "groupBox1";
            this.groupBox1.Size = new System.Drawing.Size(200, 180);
            this.groupBox1.TabIndex = 0;
            this.groupBox1.TabStop = false;
            this.groupBox1.Text = "X-Werte";
            // 
            // Schrittweite
            // 
            this.Schrittweite.Location = new System.Drawing.Point(125, 135);
            this.Schrittweite.Name = "Schrittweite";
            this.Schrittweite.Size = new System.Drawing.Size(34, 20);
            this.Schrittweite.TabIndex = 5;
            this.Schrittweite.Text = "1";
            this.Schrittweite.TextAlign = System.Windows.Forms.HorizontalAlignment.Right;
            // 
            // Endwert
            // 
            this.Endwert.Location = new System.Drawing.Point(125, 95);
            this.Endwert.Name = "Endwert";
            this.Endwert.Size = new System.Drawing.Size(34, 20);
            this.Endwert.TabIndex = 4;
            this.Endwert.Text = "0";
            this.Endwert.TextAlign = System.Windows.Forms.HorizontalAlignment.Right;
            // 
            // Startwert
            // 
            this.Startwert.Location = new System.Drawing.Point(125, 50);
            this.Startwert.Name = "Startwert";
            this.Startwert.Size = new System.Drawing.Size(34, 20);
            this.Startwert.TabIndex = 3;
            this.Startwert.Text = "0";
            this.Startwert.TextAlign = System.Windows.Forms.HorizontalAlignment.Right;
            // 
            // label3
            // 
            this.label3.AutoSize = true;
            this.label3.Location = new System.Drawing.Point(21, 135);
            this.label3.Name = "label3";
            this.label3.Size = new System.Drawing.Size(74, 13);
            this.label3.TabIndex = 2;
            this.label3.Text = "Schrittweite";
            // 
            // label2
            // 
            this.label2.AutoSize = true;
            this.label2.Location = new System.Drawing.Point(21, 95);
            this.label2.Name = "label2";
            this.label2.Size = new System.Drawing.Size(53, 13);
            this.label2.TabIndex = 1;
            this.label2.Text = "Endwert";
            // 
            // label1
            // 
            this.label1.AutoSize = true;
            this.label1.Location = new System.Drawing.Point(21, 53);
            this.label1.Name = "label1";
            this.label1.Size = new System.Drawing.Size(58, 13);
            this.label1.TabIndex = 0;
            this.label1.Text = "Startwert";
            // 
            // listBox1
            // 
            this.listBox1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
            this.listBox1.FormattingEnabled = true;
            this.listBox1.Location = new System.Drawing.Point(264, 32);
            this.listBox1.Name = "listBox1";
            this.listBox1.Size = new System.Drawing.Size(211, 277);
            this.listBox1.TabIndex = 1;
            // 
            // Start_Button
            // 
            this.Start_Button.Location = new System.Drawing.Point(27, 252);
            this.Start_Button.Name = "Start_Button";
            this.Start_Button.Size = new System.Drawing.Size(90, 50);
            this.Start_Button.TabIndex = 2;
            this.Start_Button.Text = "Start";
            this.Start_Button.UseVisualStyleBackColor = true;
            this.Start_Button.Click += new System.EventHandler(this.Start_Button_Click);
            // 
            // Reset_Button
            // 
            this.Reset_Button.Location = new System.Drawing.Point(137, 252);
            this.Reset_Button.Name = "Reset_Button";
            this.Reset_Button.Size = new System.Drawing.Size(90, 50);
            this.Reset_Button.TabIndex = 3;
            this.Reset_Button.Text = "Reset";
            this.Reset_Button.UseVisualStyleBackColor = true;
            this.Reset_Button.Click += new System.EventHandler(this.Reset_Button_Click);
            // 
            // Form1
            // 
            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.ClientSize = new System.Drawing.Size(506, 340);
            this.Controls.Add(this.Reset_Button);
            this.Controls.Add(this.Start_Button);
            this.Controls.Add(this.listBox1);
            this.Controls.Add(this.groupBox1);
            this.Name = "Form1";
            this.Text = "Aufgabe_273_Funktionswerte Parabel";
            this.groupBox1.ResumeLayout(false);
            this.groupBox1.PerformLayout();
            this.ResumeLayout(false);

        }

        #endregion

        private System.Windows.Forms.GroupBox groupBox1;
        private System.Windows.Forms.TextBox Schrittweite;
        private System.Windows.Forms.TextBox Endwert;
        private System.Windows.Forms.TextBox Startwert;
        private System.Windows.Forms.Label label3;
        private System.Windows.Forms.Label label2;
        private System.Windows.Forms.Label label1;
        private System.Windows.Forms.ListBox listBox1;
        private System.Windows.Forms.Button Start_Button;
        private System.Windows.Forms.Button Reset_Button;
    }
}