Avatar billede thomas_n Nybegynder
05. oktober 2012 - 15:41 Der 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.
Avatar billede Syska Mester
05. oktober 2012 - 15:59 #1
Hvis du selv læser dit spm igen, forstår du det så selv for jeg gør ikke helt.

Vil du ud fra en combo box vælge properties eller methods? Og hvad vil du med værdien?

Håber du kan komme med lidt mere information, så man bedre forstår hvad du vil opnå.
Avatar billede thomas_n Nybegynder
05. oktober 2012 - 16:11 #2
Jeg prøver igen :)

Jeg har en comboboks med mm, cm, m og km og meget mere.

I stedet for at jeg hver gang skal skrive eksempelvis:

Test mintest = new Test();
mintest.km = 100;
mintest.m = 10;
mintest.mm = 1000;
mintest.cm = 15;

Jeg kunne godt tænke mig at jeg kunne lave det i stil med:
mintest.comboboks.text = 100;

Så sparer jeg en del kodelinjer.
Avatar billede arne_v Ekspert
06. oktober 2012 - 02:17 #3
Noget a la:

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);
        }
    }
}

?
Avatar billede arne_v Ekspert
06. oktober 2012 - 03:11 #4
Hm. Hvor blev mit indlaeg af.

Om igen.

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);
        }
    }
}
Avatar billede thomas_n Nybegynder
07. oktober 2012 - 15:40 #5
Tak for at bringe mig på sporet, Arne :)

Sender du et svar.
Avatar billede arne_v Ekspert
07. oktober 2012 - 16:03 #6
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester