---
title: "C# GUI"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/102888-c-gui"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "Jymdis"
published: "2004-05-04T12:07:16.000Z"
updated: "2004-05-10T12:57:00.000Z"
replies: 24
views: 592
page: 1
pages: 2
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/dotnet/102888-c-gui"
---

# C# GUI

_Sida 1 av 2._

## #1 — Jymdis, 2004-05-04T12:07Z

Hej!

Nu har jag börjat med windows application och stöter på ett problem direkt. När jag försöker komma åt kontrollerna (exempelvis en knapp) ifrån egna metoder så funkar det inte, varför inte?

```
		private static void Uppdatera()
		{
			button1.Click();

		
		}
```

fungerar exempelvis inte. Tankefel från mig helt säkert, men nån får gärna förklara varför.

Permalänk: https://www.webforum.nu/p/102888

## #2 — SPiN, 2004-05-04T12:29Z

Den måste vara definierad som en instansvariabel, alltså i klassen - och inte i någon metod - för att du ska kunna nå den från hela klassen.

Permalänk: https://www.webforum.nu/p/1337878

## #3 — Jon, 2004-05-04T12:39Z

Har du dragit ut den från designern till din form är den private, så det borde inte vara några problem. Vad är det du försöker åstadkomma och var ligger funktionen Uppdatera() och varför är den statisk?

Visa hela koden :)

Permalänk: https://www.webforum.nu/p/1337881

## #4 — Jymdis, 2004-05-08T12:46Z

Uppföljningsfråga:
Jag har en ArrayList som heter lager, vari det ligger objekt av två olika typer (MC och Bil.
Jag behöver ha ut objekten och deras värden för att jämföra. 

Exempelvis, jag har en Listbox och vill skriva ut världen i labels när jag väljer en rad i denna (som motsvaras av ett objekt). 

Om ni inte fattar nåt, hojta så postar jag koden.

Permalänk: https://www.webforum.nu/p/1343153

## #5 — renholm, 2004-05-08T13:35Z

I sann OOP anda bör du då ha en klass som MC och Bil ärver ifrån, denna klass kan t.ex döpas till Fordon och innehåller properties som är gemensamt för MC och Bil. På så sätt kan du skriva ut dessa värden utan att bry dig om i fall det är en bil eller MC. Om du sedan villk ontrollera vad som är vad går det att göra med:

```
if (lager[0] is Bil)
   // gör något i fall det är en bil
else (lager[0] is MC)
   // i fall det är en mc...
```

Permalänk: https://www.webforum.nu/p/1343169

## #6 — Jymdis, 2004-05-08T13:40Z

Jo, i sann OOP andrahar jag en klass som heter precis Fordon.

men skriver jag då exmpelvis o.Värde (där o är for each object o in lager så att säga) så funkar inte det?

För att förtydliga;
hur gör jag för att få objektet lager så jag kan använda det och dess värden? Fordon är en abstrakt klass.

```
	foreach (object o in lager)
			{
				if (o is Bil)
				{
				label5.Text = (Bil)o.Marke;
				}
				if (o is MC)
				{}
			}
```

Fungerar ju inte. (Bil)o.Marke blir fel.

Permalänk: https://www.webforum.nu/p/1343171

## #7 — renholm, 2004-05-08T15:34Z

För att du ska kunna få ut ett värde ur Bil måste du göra så här:

```
((Bil)o).Marke
```

För att kunna få ut fordon på engång utan att behöva använda () kan du skapa en egen Collection, vilket är snyggast.

Permalänk: https://www.webforum.nu/p/1343211

## #8 — Jymdis, 2004-05-08T16:04Z

```
label5.Text = ((Bil)lager[0]).Marke;
```

"den angivna omvandlingen är inte giltig".

Permalänk: https://www.webforum.nu/p/1343224

## #9 — renholm, 2004-05-08T16:58Z

Läskigt med svenska felmeddelanden :)

Hur ser det ut när du lägger till dem i din ArrayList?

Permalänk: https://www.webforum.nu/p/1343244

## #10 — Jymdis, 2004-05-08T17:22Z

```
r = new StreamReader("lager.dat");
					BinaryFormatter bf = new BinaryFormatter();
					ArrayList temp = (ArrayList)bf.Deserialize(r.BaseStream);
					foreach (object o in temp)
						lager.Add(o);
```

exempelvis!

och

```
NyBil nb = new NyBil();
			Fordon o = nb.ShowDialog();
			Add(o);
```

inget som säger särskilt mycket va? ;)

Permalänk: https://www.webforum.nu/p/1343254

## #11 — renholm, 2004-05-08T18:34Z

vad retunerar nb.ShowDialog() ? Bil eller Fordon?

Permalänk: https://www.webforum.nu/p/1343276

## #12 — Jymdis, 2004-05-08T18:53Z

nb.ShowDialog()  returnerar en bil!
men där finns också nm.ShowDialog() som returnerar en MC.
Alltså finns det både Bil och MC i arraylisten.

Permalänk: https://www.webforum.nu/p/1343288

## #13 — renholm, 2004-05-08T20:06Z

ok, tänkte att det kanske blev fel där, att den retunera något annat. Verkar konstigt att du får fel när du försöker läsa ett värde.

Permalänk: https://www.webforum.nu/p/1343312

## #14 — Jymdis, 2004-05-08T20:35Z

mmm lite mysko är det :)

Permalänk: https://www.webforum.nu/p/1343320

## #15 — Jymdis, 2004-05-09T10:49Z

Det var ett felaktigt objekt som castades. Därav felmeddelandet.
Sista frågan nu då, sen är allt klart:

```
if (((Fordon)o).Regnr == listContacts.SelectedItem)
```

Vilket inte är rätt, vad jag vill ha egentligen är:

```
if (((Fordon)o).Regnr == listContacts.SelectedItem.StartsWith)
```

eller hur man ska säga. Jag vill true ska vara om listContacts startar med regnr. Hur gör djur, eller man? :)

Permalänk: https://www.webforum.nu/p/1343486

## #16 — Jon, 2004-05-09T13:22Z

Vänd på det:

```
if (((Fordon)o).Regnr.StartsWith(Contacts.SelectedItem))
```

  :)

Permalänk: https://www.webforum.nu/p/1343549

## #17 — Jymdis, 2004-05-09T13:29Z

Är du säkert på det?

Det finns alltså fler värden i listContacts, den bara börjar med regnr?

Permalänk: https://www.webforum.nu/p/1343552

## #18 — Jon, 2004-05-09T13:38Z

Aha! Missläste lite.
Menar du att t.ex Regnr är: ooj386 och värdena i Contacts är ooj, ook ocksåvidare? då blir det:

```
if (Contacts.SelectedValue.StartsWith((Fordon)o).Regnr))
```

Annars: berätta hur värdena ser ut.

Permalänk: https://www.webforum.nu/p/1343555

## #19 — Jymdis, 2004-05-09T13:42Z

> lager.cs(538): 'object' does not contain a definition for 'StartsWith'

Å det gäller listContacts.SelectedValue då.

Permalänk: https://www.webforum.nu/p/1343557

## #20 — Jon, 2004-05-09T17:42Z

Vad händer om du slänger på en .ToString() på den då?

Permalänk: https://www.webforum.nu/p/1343626

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/102888-c-gui  
Nästa sida: https://www.webforum.nu/amne/dotnet/102888-c-gui/page2.md
