05. oktober 2012 - 15:41Der er
5 kommentarer og 1 løsning
Konverter elementer i Comboboks til felter i metode
Hej,
Håber I kan hjælpe.
Jeg har en klasse der indeholder forskellige metoder med diverse felter.
Eksempelvis:
class Test { public double KM { get; set; }
public double OK { get { return 144; } set { KM = value * 144; } } public double Meter { get { return KM / 155; } set { KM = value * 155; } } } Når jeg skal kalde klassen, så kan jeg gøre sådan her:
Test mintest = new Test(); mintest.Meter = 110; double d_meter = mintest.OK;
Nu har jeg flere klasser med mange metoder og kunne godt tænke mig at kunne vælge felterne i metoderne ved hjælp af en Comboboks. Så eksempelvis mintest.Meter blev genereret ud fra en Comboboks hvor i det valgte element var Meter.
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
using System; using System.Collections.Generic; using System.Drawing; using System.Windows.Forms;
namespace E { public class Foobar { public int A { get; set; } public int B { get; set; } public int C { get; set; } } public partial class MainForm : Form { public MainForm() { InitializeComponent(); comboBox1.DataSource = new List<Tuple<string, Action<Foobar,int>>> { new Tuple<string, Action<Foobar,int>>("Set A",(o,v)=>o.A=v), new Tuple<string, Action<Foobar,int>>("Set B",(o,v)=>o.B=v), new Tuple<string, Action<Foobar,int>>("Set C",(o,v)=>o.C=v) }; comboBox1.DisplayMember = "Item1"; comboBox1.ValueMember = "Item2"; } void Button1Click(object sender, EventArgs e) { Foobar o = new Foobar(); ((Action<Foobar,int>)comboBox1.SelectedValue).Invoke(o, int.Parse(textBox1.Text)); MessageBox.Show(o.A + "|" + o.B + "|" + o.C); } } }
using System; using System.Collections.Generic; using System.Drawing; using System.Windows.Forms;
namespace E { public class Foobar { public int A { get; set; } public int B { get; set; } public int C { get; set; } } public partial class MainForm : Form { public MainForm() { InitializeComponent(); comboBox1.DataSource = new List<Tuple<string, Action<Foobar,int>>> { new Tuple<string, Action<Foobar,int>>("Set A",(o,v)=>o.A=v), new Tuple<string, Action<Foobar,int>>("Set B",(o,v)=>o.B=v), new Tuple<string, Action<Foobar,int>>("Set C",(o,v)=>o.C=v) }; comboBox1.DisplayMember = "Item1"; comboBox1.ValueMember = "Item2"; } void Button1Click(object sender, EventArgs e) { Foobar o = new Foobar(); ((Action<Foobar,int>)comboBox1.SelectedValue).Invoke(o, int.Parse(textBox1.Text)); MessageBox.Show(o.A + "|" + o.B + "|" + o.C); } } }
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.