|
|
|
C-Sharp
|
Hallo, ich habe ein Programm erstellt in dem ich Zufalls-Zahlen addiere und dann, je nach Ergebnis, ein Ereignis bekomme. Das ganze hab ich mit der switch case-Methode gemacht.
Bsp.:
int x = r.Next(1,21);
switch (x)
{
case 3: textBox1.Text="xx"
Das hab ich mehrmalls mit verschiedenen Buttons kombiniert, so das ich mit den Zufallszahlen x,y,z zusammenaddiert zu "w" rechne. Jetzt will ich jedoch eine Drop-Down Liste haben die je nach Auswahl neue Case Angaben hat, hab aber keine Ahnung wie ich da ran gehen soll.
Danke für Hilfe im Vorraus.
|
|
|
|
|
|
|
Was willst du jetzt wissen? Wie du die Dropdown-Liste machst?
Und die Auswahl der Dropdown-Liste soll dann Einfluss auf deinen Zufallswert haben?
Wenn ja, hab ich dir hier mal ein Programm zusammegeworfen, was dir eine Dropdown Box anzeigt und ein Label. Bei ändern des Focuses in der Dropdown, wird der Inhalt in einem Label anzeigt. Damit solltest du die Logik haben, die du benötigst.
Program.cs
|
Code: |
using System;
using System.Collections.Generic;
using System.Windows.Forms;
namespace TestApp
{
static class Program
{
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new TestApp());
}
}
}
|
|
Form1.Designer.cs
|
Code: |
namespace TestApp
{
partial class TestApp
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.ComboBox = new System.Windows.Forms.ComboBox();
this.Label = new System.Windows.Forms.Label();
this.SuspendLayout();
//
// ComboBox
//
this.ComboBox.FormattingEnabled = true;
this.ComboBox.Items.AddRange(new object[] {
"Eins",
"Zwei",
"Drei"});
this.ComboBox.Location = new System.Drawing.Point(77, 49);
this.ComboBox.Name = "ComboBox";
this.ComboBox.Size = new System.Drawing.Size(126, 21);
this.ComboBox.TabIndex = 0;
this.ComboBox.Text = "Klick mich an!";
this.ComboBox.SelectedIndexChanged += new System.EventHandler(this.ComboBox_SelectedIndexChanged);
//
// Label
//
this.Label.AutoSize = true;
this.Label.Location = new System.Drawing.Point(74, 94);
this.Label.Name = "Label";
this.Label.Size = new System.Drawing.Size(167, 13);
this.Label.TabIndex = 1;
this.Label.Text = "Hier könnte ihre Werbung stehen.";
//
// TestApp
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(292, 178);
this.Controls.Add(this.Label);
this.Controls.Add(this.ComboBox);
this.Name = "TestApp";
this.Text = "TestApp";
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.ComboBox ComboBox;
private System.Windows.Forms.Label Label;
}
}
|
|
Form1.cs
|
Code: |
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace TestApp
{
public partial class TestApp : Form
{
public TestApp()
{
InitializeComponent();
}
private void ComboBox_SelectedIndexChanged(object sender, EventArgs e)
{
Label.Text = ComboBox.Text;
}
}
}
|
|
|
[Dieser Beitrag wurde 2 mal editiert; zum letzten Mal von wuSel am 11.06.2010 15:16]
|
|
|
|
|
|
Entschuldige, wenn ich es jetzt einfach nicht verstehe und du die Lösung mir wahrscheinlich schon gegeben hast:
Also wie die Drop Down Liste entsteht ist mir klar nur will ich wissen wie ich das auf die switch case Methode anwende.
Program.cs und MainForm.Designer.cs sind ähnlich.
Worauf es mir ankommt ist die (ich fasse es kurz zusammen):
MainForm.cs
|
Code: |
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
namespace xxx
{
public partial class MainForm : Form
{
public MainForm()...
void Button1Click(object sender, EventArgs e)...
void Button2Click(object sender, EventArgs e)...
void Button3Click(object sender, EventArgs e)...
void Button4Click(object sender, EventArgs e)...
void Button5Click(object sender, EventArgs e)...
}
} |
|
Die Buttons bestehen aus den int_Werten x,y,z die zum Wert "w" zusammenaddiert werden. Diese werden dann mit switch (w) und case 3: break; zu verschiedenen Ausgaben in TextBoxen weutergegeben.
Jetzt will ich aber die TextBoxen bei einer anderen Auswahl von der DropDown Liste mit anderen Ausgaben versehen. Ich weiß jetzt aber nicht wie ich das im QuellCode eingebe, das bei Auswahl 1 dies und jenes angegeben wird, spich die Buttons andere Ausgaben erstellen.
|
|
|
|
|
|
|
push
|
|
|
|
|
|
|
Kannst du mal genauer beschreiben, was das Programm tun soll? Da blick ich echt irgendwie nicht durch...
|
|
|
|
|
|
|
switch-case setzt zwingend statische case-Angaben voraus. Dynamisch geht das nicht.
|
|
|
|
|
|
|
Also das Programm besteht aus mehreren Case Angaben. Jede Case Zahl hat einen Text der ausgegeben wird. Das heißt ich habe 3 Zufallszahlen(x,y,z) die von 1-20 gehen. Diese Zahlen werden zusammenaddiert(w). W liegt logischerweise zwischen 3und60.
Die Case Methoden haben dann im Fall 3 als Text auszugeben "Blablabla" so geht es bis 60 hoch. Logischerweise 57 Texte. Ich will jetzt eine Drop-Down Liste verwenden um ein anderes Gebiet(später mehr) zu verwenden. Dann sollen die Case Methoden verändert werden. Es spielt keine Rolle ob ich einfach in den Quelltext neue Case-Methoden reinschreibe, sondern will ich nur das da im Programm steht: Wenn ich in Drop-Down liste dies wähle arbeite mit jener Switch-case Liste.
Das ganze ist ein Zufallsgenerator für DSA, der Begegnungen, Waffen, Rüstungen zufällig angeben soll. In die Drop-down Liste baue ich die Gebiete ein. Wenn ich ein anderes Gebiet benutze soll in den Text-Boxen auch andere Ergebnisse erscheinen, weil eine Begegnung mit einem Yeti in der Wüste nicht sehr wahrscheinlich ist.
Ich hoffe man versteht jetzt was ich will, danke für jede Hilfe.
|
|
|
|
|
|
|
warum dafür so nen riesen switch-block?
nimm doch einfach ein zweidimensionales array und greife über den index direkt auf die werte zu. die erste dimension nimmste für die gebiete und die zweite für die texte.
|
|
|
|
|
|
Thema: Wie verwende ich eine DropDown-List ( C-Sharp ) |