Entwickler-Ecke

WinForms - Durchsichtigkeit einer Form langsam veringern


traceurmicha - Fr 09.04.10 09:35
Titel: Durchsichtigkeit einer Form langsam veringern
Moin Moin,
Mein Problem:
Ich habe eine WindowsForm, die ich langsam von "nicht sichtbar" (also Opacity = 0%) zu sichtbar (Opacity = 100%) machen will. Ich habe dort schon einen Timer eingebau, jedoch bekomme ich immer eine "NullReferenceException":
Zitat:
Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.


Hier mein Code:

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
private void Form1_Load(object sender, EventArgs e)
        {
            
            Timer t1 = new Timer();
            t1.Interval = 1000;
            t1.Tick += new EventHandler(t1_Tick);
            t1.Start();
        }

        void t1_Tick(object sender, EventArgs e)
        {
            if(Form1.ActiveForm.Opacity != 100)
                Form1.ActiveForm.Opacity += 5;
            
        }


Die Opacity ist als Startwert auf 0% gesetzt worden. Bitte um Hilfe! :lol:


chip777 - Fr 09.04.10 10:15

Wieso die NullReferenceException kommt kann ich dir nicht sagen,
allerdings ist es bei der Opacity so, dass diese von 0 bis 1 definiert ist und nicht von 0 bis 100, dass musste ich gestern auch erst feststellen^^

Ich habe bei einem meiner Programme etwas ähnliches eingebaut, allerdings nicht über einen Timer, sondern einfach eine Schleife genutzt in der ich Opacity immer um 0,05 erhöhe.

edit: ich komm gerade nicht an meinen Quellcode, falls das Problem allerdings weiter bestehen sollte, kann ich dir den heute gegen Abend mal posten.


traceurmicha - Fr 09.04.10 10:24

Also habe jetz die 100 in 1 und die +=5 durch +=0.05 ersetzt, soweit klappt es dann auch, allerdings kommt immernoch die Exception...


danielf - Fr 09.04.10 10:42

Weißt du was NullPointerException bedeutet?

Dann ist nämlich auch klar wo du suchen musst.


traceurmicha - Fr 09.04.10 10:56

Naja so gaaaanz so genau nicht, mach mich aber schlau :wink:

P.S. Ich will keinen Quelltext haben falls du das denkst, ein kleiner denkanschubser würde schon reichen :wink:


danielf - Fr 09.04.10 12:37

Eine NullPointerException tritt ein, wenn du ein Objekt deklariert hast, es sichtbar ist (ansonsten motzt schon der Kompilier) aber nicht instantiiert wurde oder ein Property oder Funktion null zurück gibt.

Ich vermute die Exception tritt in Zeile 12 auf und das entweder Form1 oder ActiveForm == null ist weil du den Fokus wechselst. Verwende eine Klassenmember dem du die gewünschte Form zuweißt... dann kannst du über diesen Member die Opacity ändern. Ich bin mir auch nicht sicher ob du ein Invoke brauchst. Aber des merkst du dann ja schnell :)


traceurmicha - Fr 09.04.10 13:01

Ja Daniel du hast recht, es ist die Zeile 12 :D

Danke dir, damit wäre mein Problem dann wohl gelöst :zustimm: