Toon posts:

[vb.net] form 'includen'

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben al een tijdje op zoek naar een manier op een form te 'includen'. Aan gezien dit niet letterlijk mogelijk is moest ik een andere manier zoeken. Ik heb een programma met Form1 als MDIParent
Form2 als MDIChild
Form3 als een losse form
ik wil dat als er op een button word geklikt in form2, dat dan form3 tevoorschijn komt. Dit kan makkelijk met show(). Maar dit is niet wat ik zoek. Ik wil eigenlijk iets hebben alsof form2 de mdiparent is en form3 de mdichild. maar aangezien form1 parent is en form2 child, kan form2 niet ook een parent zijn.

Ik heb op het moment deze structuur in form2:
code:
1
2
3
4
5
6
+------+---------+
| pa-  | panel   |
| nel  +---------+
|      | leeg    |
|      | form3   |
+------+---------+

alleen waar het leeg is, en waar form3 inmoet, krijg ik het niet meer voor elkaar. MDI werkt al niet, ik kan daar ook een losse panel in zetten en dat alles van form3 en die panel zetten. Alleen er komen nog 4/5 van die forms, als form3. Dus dat is ook niet echt een optie.

even later kwam ik dit tegen:
MSDN Sample
Hier kan je in IE een form hosten. Alleen heb je daar een dll van jou programma nodig, maar hoe krijg ik die?

Als ik dat weet en ik krijg dit gedoe aan de praat is alles compleet. Er is namelijk een mogelijkheid om een IE-venster toe te voegen aan je programma, zodat ik die webpagina's lokaal zet en daarin die forms laat hosten.

Ik hoop dat mij vraag een beetje duidelijk is...

  • whoami
  • Registratie: December 2000
  • Laatst online: 01:02
Kan je dat panel niet als owner van Form3 meegeven?

https://fgheysels.github.io/


Verwijderd

Topicstarter
whoami schreef op 30 juni 2003 @ 13:12:
Kan je dat panel niet als owner van Form3 meegeven?
welk panel bedoel je?
en hoe is dit algemeen mogelijk?
*blijft vragen*
wordt dat panel dan een soort van mdiparent?

  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 14-05-2024

OZ-Gump

terug van weggeweest

En als dat geen oplossing is, kun je dan het form niet opbouwen als panel (bestaan er ook frames in VB.Net zoals Delphi die heeft?) en deze dynamisch inladen wanneer je hem nodig hebt? Zo kun je switchen wanneer je maar wilt. Door runtime de panel te creeeren en toe te voegen aan het scherm. Eventueel afmetingen en positie instellen en gaan met die banaan...

[ Voor 4% gewijzigd door OZ-Gump op 30-06-2003 13:18 ]

My personal website


  • whoami
  • Registratie: December 2000
  • Laatst online: 01:02
Op form2, op de plaats waar form3 in moet, zet je een panel.
Bij de creatie van form3 geef je dan dat panel mee als owner van form3

code:
1
2
form3 f3 = new form3(hetPanel);
f3.Show();


* whoami weet ook niet of het zal werken.

https://fgheysels.github.io/


Verwijderd

Topicstarter
whoami schreef op 30 juni 2003 @ 13:17:
Op form2, op de plaats waar form3 in moet, zet je een panel.
Bij de creatie van form3 geef je dan dat panel mee als owner van form3

code:
1
2
form3 f3 = new form3(hetPanel);
f3.Show();


* whoami weet ook niet of het zal werken.
ik snap wel wat je bedoelt, maar ik krijg het niet voor elkaar, de text die je had is meer als C++, vanwege de ;
dim frm as new form3(panel6)
frm.show
zo zou het al meer kloppen, maar die panel6 kan hij niet goed keuren omdat het te veel argumenten heeft in de functie new()
dus de text panel6 kan daar niet...

ik zal ook eens wat gaan opzoeken over frames

  • whoami
  • Registratie: December 2000
  • Laatst online: 01:02
Verwijderd schreef op 30 juni 2003 @ 13:22:
[...]

ik snap wel wat je bedoelt, maar ik krijg het niet voor elkaar, de text die je had is meer als C++, vanwege de ;
Ehm jah, ik doe geen vb.net , maar C#. ;)
code:
1
2
 dim frm as new form3(panel6)
 frm.show

zo zou het al meer kloppen, maar die panel6 kan hij niet goed keuren omdat het te veel argumenten heeft in de functie new()
dus de text panel6 kan daar niet...
Oja, in Delphi kan dat wel.
Maar, een form heeft wel een property Owner.

Dan wordt de code als volgt:
code:
1
2
3
Form3 f3 = new Form3();
f3.Owner = panel6;
f3.Show();

C#

https://fgheysels.github.io/


  • DukeMan
  • Registratie: Mei 2000
  • Niet online
Maak op form3 een panel en plaats daar al je controls in...
Op form2 maak je ook een panel welke als container voor form3 gaat werken.

Vervolgens laad je form3 in en doe je een Control.Add op het panel op form2 met als param het panel op form 3.

Verwijderd

Topicstarter
whoami schreef op 30 June 2003 @ 13:26:
[...]

Ehm jah, ik doe geen vb.net , maar C#. ;)
aha... lijkt wel een beetje op elkaar
[...]

Oja, in Delphi kan dat wel.
weer iets anders :/ :P
Maar, een form heeft wel een property Owner.

Dan wordt de code als volgt:
code:
1
2
3
Form3 f3 = new Form3();
f3.Owner = panel6;
f3.Show();

C#
hmm.... ik krijg het niet echt omgebouwd, want bij de f3.owner kan ik alleen een heel form als owner mee geven, en niet alleen een form-control

Verwijderd

Topicstarter
NTGiant schreef op 30 June 2003 @ 13:35:
Maak op form3 een panel en plaats daar al je controls in...
Op form2 maak je ook een panel welke als container voor form3 gaat werken.

Vervolgens laad je form3 in en doe je een Control.Add op het panel op form2 met als param het panel op form 3.
:? wat voor container?
graag iets meer info/duidelijkheid en als het kan ook nog een voorbeeldje, want ik snap het niet echt helemaal

  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 14-05-2024

OZ-Gump

terug van weggeweest

Whoami's laatste post gaat ook niet werken, omdat Owner van het type Form moet zijn, en die accepteert (dus) geen Panel als owner.
NTGiant z'n oplossing zou wel eens kunnen werken, omdat hij alleen de controls kopieert naar een reeds bestaand panel op het scherm (toch, NTGiant?).

My personal website


Verwijderd

Topicstarter
Verwijderd schreef op 30 juni 2003 @ 13:37:
[...]

:? wat voor container?
graag iets meer info/duidelijkheid en als het kan ook nog een voorbeeldje, want ik snap het niet echt helemaal
ik ben er al deels uit over de container, maar hoe krijg ik die aan de praat, hoe krijg ik form3.panel1 daarin gepropt?

  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 14-05-2024

OZ-Gump

terug van weggeweest

Je hoeft in principe helemal geen container aan te maken, zo wordt dat alleen genoemd (door NTGiant in dit geval ;) ).

Nogmaals: Maak een panel op de plaats waar je het formulier straks wil laden. Maak op het formulier dat je daar straks wil hebben een panel aan waarop je het volledige formulier opbouwt, met alle knoppen, labels etc. die erbij horen. Vervolgens kun je dat inladen door op het 'parent' form de volgende code te gebruiken:
Visual Basic .NET:
1
2
  Dim f2 as new Form2()
  me.Panel1.Controls.Add(f2.Panel1)
Dit was dus om te beginnen het idee van NTGiant...

My personal website


Verwijderd

Topicstarter
OZ-Gump schreef op 30 June 2003 @ 13:48:
Je hoeft in principe helemal geen container aan te maken, zo wordt dat alleen genoemd (door NTGiant in dit geval ;) ).

Nogmaals: Maak een panel op de plaats waar je het formulier straks wil laden. Maak op het formulier dat je daar straks wil hebben een panel aan waarop je het volledige formulier opbouwt, met alle knoppen, labels etc. die erbij horen. Vervolgens kun je dat inladen door op het 'parent' form de volgende code te gebruiken:
Visual Basic .NET:
1
2
  Dim f2 as new Form2()
  me.Panel1.Controls.Add(f2.Panel1)
Dit was dus om te beginnen het idee van NTGiant...
yes.. tenk joe. dit was hetgene dat ik zocht

bedankt allemaal!!

Verwijderd

Topicstarter
hmm.. nog een klein vraagje, hoe krijg ik nou een waarde van de 'include' form in de hoofd form?
normaal kan dat zo:
code:
1
2
3
Dim myForm As New Form2()
myForm.Show()
TextBox1.Text = myForm.TextBox1.Text

maar dat werkt nu niet :/
heeft iemand hier een oplossing voor?

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Je moet of je Textbox uit myForm als public declareren of als je het netter wilt doen een public property declareren die de string uit je textbox returnd.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Verwijderd

Topicstarter
rwb schreef op 30 June 2003 @ 14:20:
Je moet of je Textbox uit myForm als public declareren of als je het netter wilt doen een public property declareren die de string uit je textbox returnd.
ik heb deze code als ik de 'score' in die form bekijk heeft het wel een waarde, maar in de control niet meer:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    Public Function getscore()
        Dim score As Integer = 0
        If Me.CheckBox1.Checked = True Then score = score + 1
        If Me.CheckBox2.Checked = True Then score = score + 2
        If Me.CheckBox3.Checked = True Then score = score + 4
        If Me.CheckBox4.Checked = True Then score = score + 8
        If Me.CheckBox5.Checked = True Then score = score + 16
        If Me.CheckBox6.Checked = True Then score = score + 32
        If Me.CheckBox7.Checked = True Then score = score + 64
        If Me.CheckBox8.Checked = True Then score = score + 128
        If Me.CheckBox9.Checked = True Then score = score + 256
        If Me.CheckBox10.Checked = True Then score = score + 512
        If Me.CheckBox11.Checked = True Then score = score + 1024
        If Me.CheckBox12.Checked = True Then score = score + 2048
        Return score
    End Function
het is public en zou dus ook van buitenaf goed moeten zijn...

Dit is een stukje code die ik gebruik om op form2 de score van ctc_checkit te achterhalen, maar het lukt helemaal niet :/
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Dim frm As New ctc_checkit()
Dim score As Integer = 0
If frm.CheckBox1.Checked = True Then score = score + 1
If frm.CheckBox2.Checked = True Then score = score + 2
If frm.CheckBox3.Checked = True Then score = score + 4
If frm.CheckBox4.Checked = True Then score = score + 8
If frm.CheckBox5.Checked = True Then score = score + 16
If frm.CheckBox6.Checked = True Then score = score + 32
If frm.CheckBox7.Checked = True Then score = score + 64
If frm.CheckBox8.Checked = True Then score = score + 128
If frm.CheckBox9.Checked = True Then score = score + 256
If frm.CheckBox10.Checked = True Then score = score + 512
If frm.CheckBox11.Checked = True Then score = score + 1024
If frm.CheckBox12.Checked = True Then score = score + 2048
TextBox2.Text = score

[ Voor 30% gewijzigd door Verwijderd op 30-06-2003 14:30 ]


  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Wat lukt er niet? Ik kan wel een heel verhaal gaan vertellen maar het is de bedoeling dat je zelf aangeeft wat er precies niet lukt en wat voor foutmelding je krijgt.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Verwijderd

Topicstarter
ik weet dat ik van form1 naar form2, waardes over kan sturen. dat wil nu ook, alleen dan van de control.add(), naar form2. maar aangezien de control nu IN form2 zitten kan ik hem niet meer van buitenaf benaderen, want de wijzigingen worden daar niet gemaakt en blijven altijd hetzelfde. maar hoe ik kan nu kijken op checkbox1 wel of niet checked is?

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 18:46

Gerco

Professional Newbie

Het zal waarschijnlijk wel helpen als je een reference naar de Panel bewaart, dan kun je die aanspreken als je methods wilt aanroepen of properties uitvragen van de controls OP dat panel.

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


Verwijderd

Topicstarter
Gerco schreef op 30 juni 2003 @ 15:09:
Het zal waarschijnlijk wel helpen als je een reference naar de Panel bewaart, dan kun je die aanspreken als je methods wilt aanroepen of properties uitvragen van de controls OP dat panel.
hoe kan ik dan zo'n reference bewaren?

  • whoami
  • Registratie: December 2000
  • Laatst online: 01:02
Je hebt waarschijnlijk hetzelfde probleem als in dit topic:
[rml][ C#, Windows Forms] Variabele in form1 lezen in form2[/rml]

Zie ook deze reply:
[rml]whoami in "[ VB.NET] waardes van een andere form?"[/rml]

Verder kan ik je ook nog aanraden om eens een boek te kopen over programmeren en dat te leren.
Hoe kan ik een reference bewaren? Hoe kan ik een variabele bijhouden?

Ik heb zo een beetje het vermoeden dat jij P&W als een persoonlijke helpdesk beschouwt. Hier willen we je natuurlijk best wel helpen , maar we verwachten van jou toch ook enige zelfwerkzaamheid. Zelf eens dingen uitzoeken als je een tip/hint krijgt, en niet verwachten dat alles je voorgekauwd zal worden.

https://fgheysels.github.io/


Verwijderd

Topicstarter
whoami schreef op 30 juni 2003 @ 15:35:
Je hebt waarschijnlijk hetzelfde probleem als in dit topic:
[rml][ C#, Windows Forms] Variabele in form1 lezen in form2[/rml]

Zie ook deze reply:
[rml]whoami in "[ VB.NET] waardes van een andere form?"[/rml]

Verder kan ik je ook nog aanraden om eens een boek te kopen over programmeren en dat te leren.
Hoe kan ik een reference bewaren? Hoe kan ik een variabele bijhouden?

Ik heb zo een beetje het vermoeden dat jij P&W als een persoonlijke helpdesk beschouwt. Hier willen we je natuurlijk best wel helpen , maar we verwachten van jou toch ook enige zelfwerkzaamheid. Zelf eens dingen uitzoeken als je een tip/hint krijgt, en niet verwachten dat alles je voorgekauwd zal worden.
jammer dat de meeste dingen in C++ of C# zijn, kan ik wel iets van maken, alleen is het probleem van het 1e topic iets anders.. En ook heel jammer is dat in het 2e topic een antwoord word gegeven in C#, net zoals je eerder had, kloppen enkele dingen niet. dus helaas zijn beide topics niet erg behulpzaam.

een boek kopen is meestal overbodig omdat veel te vinden is op i'net, en voor de kleine dingen die niet te vinden zijn, ga ik geen boek kopen.

het probleem is hier heel erg vreemd, normaal lukt er heel erg veel met variabele en kan ik het zelf wel oplossen dmv een help/tutorial, maar dit kan ik nergens vinden, dus daarom vraag ik zoveel door.

ik zal toch maar weer eens google gaan raadplegen, om te kijken of er iets te vinden is dat mijn probleem op lost

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 18:46

Gerco

Professional Newbie

Verwijderd schreef op 30 June 2003 @ 15:47:
jammer dat de meeste dingen in C++ of C# zijn, kan ik wel iets van maken, alleen is het probleem van het 1e topic iets anders.. En ook heel jammer is dat in het 2e topic een antwoord word gegeven in C#, net zoals je eerder had, kloppen enkele dingen niet. dus helaas zijn beide topics niet erg behulpzaam.
C# en VB.NET lijken, op de syntax na, best veel op elkaar, net als alle .NET talen, gebruiken ze dezelfde libraries. Een Form in VB.NET is hetzelfde als die form in C# en kan dus ook (bijna) hetzelfde, je moet alleen de syntax wat verbouwen, daar hoef je geen professor in de theoretische .NETkunde voor te zijn.

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


  • whoami
  • Registratie: December 2000
  • Laatst online: 01:02
Verwijderd schreef op 30 June 2003 @ 15:47:
[...]

jammer dat de meeste dingen in C++ of C# zijn, kan ik wel iets van maken, alleen is het probleem van het 1e topic iets anders.. En ook heel jammer is dat in het 2e topic een antwoord word gegeven in C#, net zoals je eerder had, kloppen enkele dingen niet. dus helaas zijn beide topics niet erg behulpzaam.
Ach niet behulpzaam. Moet ik dan alles voor jou gaan voorkauwen en VB.NET gaan leren om jou kant en klare code te geven?
VB.NET en C# verschillen praktisch alleen in syntax, en ik vind dat het aan jou is om iets met de voorbeelden te doen. Je mag zelf ook wel de moeite nemen om het te vertalen in VB.NET. Er wordt gebruik gemaakt van dezelfde libraries, de concepten die ik in C# gebruik (delegates), zijn ook beschikbaar in VB.NET. Het enige wat jij nog hoefde te doen, is het omzetten van C# naar VB.NET, en dat is praktisch alleen een kwestie van de syntax.
een boek kopen is meestal overbodig omdat veel te vinden is op i'net, en voor de kleine dingen die niet te vinden zijn, ga ik geen boek kopen.
Een boek behandeld veel meer dingen en gaat veel dieper op de stof in dan gelijk welke tutorial die je op internet kan vinden.

https://fgheysels.github.io/


Verwijderd

Topicstarter
whoami schreef op 30 juni 2003 @ 15:55:
[...]

Ach niet behulpzaam. Moet ik dan alles voor jou gaan voorkauwen en VB.NET gaan leren om jou kant en klare code te geven?
VB.NET en C# verschillen praktisch alleen in syntax, en ik vind dat het aan jou is om iets met de voorbeelden te doen. Je mag zelf ook wel de moeite nemen om het te vertalen in VB.NET. Er wordt gebruik gemaakt van dezelfde libraries, de concepten die ik in C# gebruik (delegates), zijn ook beschikbaar in VB.NET. Het enige wat jij nog hoefde te doen, is het omzetten van C# naar VB.NET, en dat is praktisch alleen een kwestie van de syntax.
nee, je hoeft het niet voor te kauwen of te gaan leren. maar wat veel mensen doen is een paar woorden zeggen, dit kan soms heel behulpzaam zijn, maar soms ook niet. er werd iets gezegd over een reference naar de panel, maar hoe zit dit? ik weet daar niks van dus ik vraag daar iets meer over... ik heb daar namelijk nog steeds niks over kunnen vinden bij google, wel andere voorbeeld voor controls.add en hoe zij de verbinding maken, maar dit zijn alleen nieuwe form(-controls) en niet al bestaande, en dat is gewoon iets anders.
[...]

Een boek behandeld veel meer dingen en gaat veel dieper op de stof in dan gelijk welke tutorial die je op internet kan vinden.
daar kan je wel gelijk in hebben... ik zal het idee iig in mn hoofd houden

  • whoami
  • Registratie: December 2000
  • Laatst online: 01:02
Verwijderd schreef op 30 June 2003 @ 14:48:
ik weet dat ik van form1 naar form2, waardes over kan sturen. dat wil nu ook, alleen dan van de control.add(), naar form2. maar aangezien de control nu IN form2 zitten kan ik hem niet meer van buitenaf benaderen, want de wijzigingen worden daar niet gemaakt en blijven altijd hetzelfde. maar hoe ik kan nu kijken op checkbox1 wel of niet checked is?
Als ik het goed begrijp ga jij dus controls van het ene form naar het andere form gooien om de waardes ervan te kunnen uitlezen? :?

Check toch nog maar eens die andere topics die ik een paar posts geleden gepost hebt....

[ Voor 8% gewijzigd door whoami op 30-06-2003 16:05 ]

https://fgheysels.github.io/


  • DukeMan
  • Registratie: Mei 2000
  • Niet online
Verwijderd schreef op 30 juni 2003 @ 13:37:
[...]

:? wat voor container?
graag iets meer info/duidelijkheid en als het kan ook nog een voorbeeldje, want ik snap het niet echt helemaal
Je kan een panel als container gebruiken...
OZ-Gump schreef op 30 juni 2003 @ 13:38:
Whoami's laatste post gaat ook niet werken, omdat Owner van het type Form moet zijn, en die accepteert (dus) geen Panel als owner.
NTGiant z'n oplossing zou wel eens kunnen werken, omdat hij alleen de controls kopieert naar een reeds bestaand panel op het scherm (toch, NTGiant?).
Je maakt een reference naar de controls.. je kopieert ze niet, maar je laad het panel uit form3 in het panel van form2, in vb6 gebruikte je daar SetPArent voor..

Voor beeldje:

Visual Basic .NET:
1
2
3
4
5
6
7
8
9
Sub LoadPanelForm3InPanelForm2
        Dim objPluginSettings As Object

        objPluginSettings = frmForm3.pnlOptions
        objPluginSettings.top = 0
        objPluginSettings.left = 0

        frmForm2.pnlPlugin.Controls.AddRange(New System.Windows.Forms.Control() {objPluginSettings})
End sub


Dit moet werken, op deze manier doe ik dat namelijk ook in een app van mij..
(Althans ik haal het uit een plugin)

Verwijderd

Topicstarter
whoami schreef op 30 June 2003 @ 16:03:
[...]


Als ik het goed begrijp ga jij dus controls van het ene form naar het andere form gooien om de waardes ervan te kunnen uitlezen? :?

Check toch nog maar eens die andere topics die ik een paar posts geleden gepost hebt....
niet helemaal... hiervoor moet je eigenlijk iets of wat terug gaan naar bovenstaande posts..

ik heb form2, daarin 'include' ik form3
in form3 kan je dingen veranderen, maar ik kan die variabelen niet van form3 naar form2 krijgen omdat ze wel los staan, als ik ze van de form3 (rechtstreeks) af haal, krijg ik alleen de originele waarde, die zijn niet up-to-date. dus ik zoek nog een manier om de nieuwste data eruit te vissen...

  • whoami
  • Registratie: December 2000
  • Laatst online: 01:02
Zie de reply van NTGiant. Je moet ze uit form2 halen.

https://fgheysels.github.io/


  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Verwijderd schreef op 30 June 2003 @ 15:47:
[...]
jammer dat de meeste dingen in C++ of C# zijn, kan ik wel iets van maken, alleen is het probleem van het 1e topic iets anders.. En ook heel jammer is dat in het 2e topic een antwoord word gegeven in C#, net zoals je eerder had, kloppen enkele dingen niet. dus helaas zijn beide topics niet erg behulpzaam.
Als je de vertaal slag van C# naar VB.NET niet kan maken moet je mischien eens op deze site kijken. Hier is de syntax van C#, VB.NET en JScript uitgelegd en staan er verschillende voorbeeldjes van alle 3 de talen. Dus daar kan je even kijken wat de verschillen zijn. Daarna zou het niet meer zo'n probleem moeten zijn om iets van C# naar VB.NET te vertalen.
Quickstart -> Languages

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”

Pagina: 1