Gå til innhold

C#: Alternativ til UserControl.Load for vanlig Control?


Anbefalte innlegg

Videoannonse
Annonse

1. Hvorfor bruker du Control istedet for usercontrol hvis du savner Load?

2. Hvorfor holder det ikke med constructoren?

3. Dette er C# forumet, det heter ikke New i C#

 

Jeg har aldri brukt hverken Form.Load eller UserControl.Load, aldri sett poenget med dem.

Endret av GeirGrusom
Lenke til kommentar

Men constructoren heter ikke new i C#, den har samme navn som klassen.

 

public class MyClass
{
 pulic MyClass()
 {
 }
 ~MyClass()
 {
 }
}

 

I VB.NET heter den New()

Public Class MyClass
 Public Sub New()
 End Sub
 Sub Finalize()
 End Sub
End Class

Endret av GeirGrusom
Lenke til kommentar

Gjetter litt her, men kan det være at LOAD metoden er et etterheng frea en tid da man kansje ikke hadde konstruktører? Eventuellt at man kun hadde konstruktører som ikke tar parametere?

 

I Clarion er det nemlig slik at en konstruktør ikke kan ta imot parametere. Derfor er man avhengig av å ha et mellom kall til en init metode. Kan jo hende sammenhengen er rundt dette. Men siden VS2005 er den første versjonen jeg har vært borti så aner jeg svært lite om dette

Lenke til kommentar

Har ikke testet .NET 1.0...men .NET 1.1 har i alle mulighet for parameter i konstruktøren. Init != Load forøvrig. Begge deler brukes i .NET (men sannsynligvis ikke på samme måte som i Clarion). Hvis du sjekker koden som blir generert i et windows forms prosjekt, så kalles init, men dette er også en generert metode. Load er jo en event, mens init er en metode.

Lenke til kommentar

Jeg gjetter at det har noe med Visual Basic å gjøre, da forms og usercontrols i VB5 og 6 ikke hadde noen constructor. Da brukte man Load for å sette slike ting.

 

Jeg tror Load bare er en event som blir kalt når vinduet har fått en handle og er klart for bruk, men jeg vet ikke.

 

Den er ihvertfall unødvendig etter det jeg kan se.

Lenke til kommentar

Hvis det er en EVENT så er den ikke ubrukelig, selv om det er svært nær sannheten ;-)

 

I Clarion har vi også EVENT:OpenWindow og da er vi allerede inne i ACCEPT Loppen. Det vil si lenge etter at både konstruktører og INIT er kjørt. I Clarion er det slik:

Class.RUN   PROCEDURE
CODE
Self.INIT()
Self.Ask()
Self.Kill()

Class.Ask   PROCEDURE
CODE
Open(Window)
ACCEPT
	case EVENT()
	   OF EVENT:OpenWindow
			// Dette blir vel det samme som LOAD i .NET
	.
.
Close(Window)

og i metoden ASK så kjøres selve ACCEPT løkka, eller EVENT handleren om du vil. I Clarion kan man ikke sende parametere til en konstruktør. Derfor vil en klasse instanseres slik:

MittObjekt &= new MinKlasse

MittObjekt.Run()

Det må selvsagt ikke være slik, men default er dette det som blir generert.

Vel, dagens Clarion prat fra den Heienske siden. Må løpe. Skal rekke toget ;-)

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...