Avatar billede lifo Nybegynder
09. maj 2004 - 21:01 Der er 14 kommentarer og
1 løsning

oprette en form fra en class fil

jeg tror at det er et dumt spørgsmål
men er det ikke muligt at oprette en form og få den vist fra en class fil ??

jeg kan i hvert fald ikke ??
måske skal jeg 'uses' et eller andet ?

når jeg forsøger så kommer formen bare op og fryser ?
Avatar billede arne_v Ekspert
09. maj 2004 - 21:05 #1
Er det ikke det man gør i enhver GUI app med:

Application.Run(new EtEllerAndetForm());

?
Avatar billede arne_v Ekspert
09. maj 2004 - 21:06 #2
Manlende using giver compile fejl ikke runtime fejl.
Avatar billede lifo Nybegynder
09. maj 2004 - 21:08 #3
øhhh det kan godt være

i en classe  forsøger jeg på denne måde

PrivateMessage pm = new PrivateMessage();
pm.Show();

formen kommer op men fryser
Avatar billede lifo Nybegynder
09. maj 2004 - 21:16 #4
det er ikke i mainformen jeg har problemer
Avatar billede arne_v Ekspert
09. maj 2004 - 21:21 #5
Ah - du har en åben form, men vil åbne en form mere ?
Avatar billede lifo Nybegynder
09. maj 2004 - 21:23 #6
yep det er der jeg får fejl
eller jeg får ingen fejl formen åbner lidt
bliver ikke helt tegnet
og fryser 
de andre forms som tilhører programmet kører findt
Avatar billede lifo Nybegynder
09. maj 2004 - 21:28 #7
om jeg bruger Application.Run(new PrivateMessage());
så kommer formen findt op men
den kører i samme tråd som hvor den blev kaldt fra
og det medfører at programmet forsætter ikke før formen lukkes
Avatar billede arne_v Ekspert
09. maj 2004 - 21:50 #8
Jeg tror at jeg må melde pas - jeg er ikke GUI mand.

Men der kommer sikkert andre forbi som er mere kyndige.
Avatar billede akempff Nybegynder
10. maj 2004 - 20:35 #9
lifo, hvis det skal køre uafhængigt kan du tråde din PrivateMessage().


//inkludere
using System.Threading;
//lave et objekt
private Thread pmThread;

//lave en metode du kan tråde
private void load(){ Application.Run(new PrivateMessage());    }

//lægge tråd kaldet ind hvor det nu passer
pmThread= new Thread( new ThreadStart( load ) );
loadThread.Start();

Det kan måske klare det.
Avatar billede akempff Nybegynder
10. maj 2004 - 20:35 #10
hov
loadThread.Start(); skal være pmThread.Start();
Avatar billede lifo Nybegynder
11. maj 2004 - 00:30 #11
ja det har jeg prøvet  det fungerer godt nok
men så kører det i en tråd helt for sig selv
også efter at mainform er lukket
Avatar billede akempff Nybegynder
11. maj 2004 - 01:00 #12
Så kan du prøve at lukke tråden i din mainforms Closing metode

pmThread.Abort();

Det burde virke
Avatar billede lifo Nybegynder
11. maj 2004 - 01:23 #13
vil prøve i morgen
Avatar billede lifo Nybegynder
21. maj 2004 - 13:20 #14
akempff smid et svar så får du pints

selv om jeg havde prøvet det før
mit problem var at jeg også skulle sende en variabel med i constructoren i PrivateMessage

løste det ved at lave en hjælpe klasse

public class PmShower
    {
        private VyPacket packet;
        public PmShower(VyPacket packet)
        {
            this.packet=packet;
        }
        //--------------------------------------------
        public void vis()
        {
            PrivateMessage pm = new PrivateMessage(packet);
            pm.ShowDialog(); // if i use Show() the form dissapers right away
        }
        //--------------------------------------------
    }

og så starte tråden

PmShower pms = new PmShower(pk);
            Thread t = new Thread(new ThreadStart(pms.vis));
            t.Start();
Avatar billede akempff Nybegynder
21. maj 2004 - 16:12 #15
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
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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