Toon posts:

[C#] Tabbed MDI interface

Pagina: 1
Acties:
  • 150 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Hallo menschen,

ik wil graag mbv c#, iig in .net een tabbed mdi interface maken, dwz dat ik doormiddel van tabjes door mijn verschillende windows wil kunnen 'bladeren'. Hoe kan ik zoiets implementeren? Kan iemand mij op weg helpen, ik heb al gezocht en kon alleen voorbeelden in win32 en mfc vinden, waar ik in dit geval niets aan heb.

daarnaast heb ik het tabcontrol gecustomized, maar dit levert een lelijke rand op doordat de tabjes gedocked zitten aan het hoofdvenster, en de mdi vensters inzinken.

Ik hoop dat ik duidelijk genoeg ben geweest, maar misschien een beter voorbeeld: ik wil zoiets als visual studio.net interface creeeren, met verschillende vensters die aan een tabje kunnen hangen. Belangrijk is in ieder geval dat ik gebruik kan maken van meerdere windows in het hoofdwindow, dmv MDI.

Groet,

  • Rhapsody
  • Registratie: Oktober 2002
  • Laatst online: 23:14

Rhapsody

In Metal We Trust

Je hebt een MDI parent waarin de childs aangemaakt worden.
Elke keer wanneer je een child aanmaakt, moet je aan je tabcontrol een tabblad toevoegen (tabpages.add() etc)

Daarnaast kun je door delegates te gebruiken je tabcontrol vanuit andere formulieren aansturen. (een delegate is een soort van function pointer, zoals die in c gebruikt worden)

op abstractvb.com staat wel een artikeltje met voorbeelden over het gebruik van delegates.

🇪🇺 pro Europa!


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:00
Infragistics heeft zo'n standaard component daarvoor.

https://fgheysels.github.io/


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
whoami schreef op maandag 09 mei 2005 @ 13:00:
Infragistics heeft zo'n standaard component daarvoor.
offtopic:
Infragistics roeleert _/-\o_
Voor de 3de maal ons abbo verlengd (helaas wel 397 euro per jaar ofzo voor de complete netadvantage suite...), maar man, wat hebben die een makkelijke componenten. Helaas zijn sommige soms nogal buggy en ben ik dan ook een vast bug-submitter daar ;) De meeste lossen ze relatief snel op ;)

Kan VS.Net dat ondertussen niet zelf zonder componenten van derden? Ik dacht dat dit wel kon inmiddels?

[ Voor 4% gewijzigd door RobIII op 09-05-2005 13:04 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • Rhapsody
  • Registratie: Oktober 2002
  • Laatst online: 23:14

Rhapsody

In Metal We Trust

RobIII schreef op maandag 09 mei 2005 @ 13:03:
[...]

offtopic:
Infragistics roeleert _/-\o_
Voor de 3de maal ons abbo verlengd (helaas wel 397 euro per jaar ofzo...), maar man, wat hebben die een makkelijke componenten. Helaas zijn sommige soms nogal buggy en ben ik dan ook een vast bug-submitter daar ;) De meeste lossen ze relatief snel op ;)

Kan VS.Net dat ondertussen niet zelf zonder componenten van derden? Ik dacht dat dit wel kon inmiddels?
Kan wel, maar het vergt wat programmeerkennis en tijd.
Maar een tabbed environment is relatief eenvoudig te maken.

Dat Infragistics is nogal duur trouwens (voor een student bedoel ik, voor bedrijven kan dit juist goedkoop zijn :D )

[ Voor 9% gewijzigd door Rhapsody op 09-05-2005 13:05 ]

🇪🇺 pro Europa!


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:00
RobIII schreef op maandag 09 mei 2005 @ 13:03:
[...]

offtopic:
Infragistics roeleert _/-\o_
Voor de 3de maal ons abbo verlengd (helaas wel 397 euro per jaar ofzo voor de complete netadvantage suite...), maar man, wat hebben die een makkelijke componenten. Helaas zijn sommige soms nogal buggy en ben ik dan ook een vast bug-submitter daar ;) De meeste lossen ze relatief snel op ;)

Kan VS.Net dat ondertussen niet zelf zonder componenten van derden? Ik dacht dat dit wel kon inmiddels?
Misschien dat er in .NET 2.0 wel dergelijke std controls zitten...

https://fgheysels.github.io/


Verwijderd

Topicstarter
Je hebt een MDI parent waarin de childs aangemaakt worden.
Elke keer wanneer je een child aanmaakt, moet je aan je tabcontrol een tabblad toevoegen (tabpages.add() etc)

Daarnaast kun je door delegates te gebruiken je tabcontrol vanuit andere formulieren aansturen. (een delegate is een soort van function pointer, zoals die in c gebruikt worden)


op abstractvb.com staat wel een artikeltje met voorbeelden over het gebruik van delegates.
Dit heb ik al geprobeerd, maar volgens mij kan ik enkel het gewenste resultaat bereiken door de tabcontrol als parent in te stellen, omdat ik anders een lelijke rand krijg omdat het tabcontrol niet 'geintegreerd' is met de mdi windows.

Huidig:
Afbeeldingslocatie: http://www.barnevelders.com/picture_library/huidig.JPG

Gewenst:
Afbeeldingslocatie: http://www.barnevelders.com/picture_library/gewenst.JPG

  • Rhapsody
  • Registratie: Oktober 2002
  • Laatst online: 23:14

Rhapsody

In Metal We Trust

Ik weet zo niet of dat laatste zomaar mogelijk is, je zult dan met drawitem en measureitem moeten werken. (oftewel ownerdrawn tabpages)

🇪🇺 pro Europa!


Verwijderd

Topicstarter
Ik wil dit eigenlijk zelf programmeren, ik ben niet van plan hiervoor te gaan betalen... (het is voor een schoolproject)

  • Rhapsody
  • Registratie: Oktober 2002
  • Laatst online: 23:14

Rhapsody

In Metal We Trust

Verwijderd schreef op maandag 09 mei 2005 @ 13:08:
Ik wil dit eigenlijk zelf programmeren, ik ben niet van plan hiervoor te gaan betalen... (het is voor een schoolproject)
ik had al het vermoeden dat jij ook op de HAN zit ;P

🇪🇺 pro Europa!


  • riezebosch
  • Registratie: Oktober 2001
  • Laatst online: 04-05 13:09
Dit heb ik gevonden toen ik zocht op EzMdiTabControl, aangezien de dingen van de VS IDE ook zo heten. Het is wel VB, maar dat mag toch geen probleem zijn?

Canon EOS 400D + 18-55mm F3.5-5.6 + 50mm F1.8 II + 24-105 F4L + 430EX Speedlite + Crumpler Pretty Boy Back Pack


  • Arie-Kanarie
  • Registratie: Juli 2004
  • Laatst online: 30-04 15:56

Arie-Kanarie

Een keer wat anders

daar hebben we VB -> C# converter voor

Software ontwikkelen in de Achterhoek voor leuke klanten door heel Nederland? Klik hier


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 07-05 10:04
Kun je niet een of ander panel op je tab zetten en die op dezelfde 'hoogt' laten vallen als je tabjes. ( niet sunken oid )?

[edit]
Arie-Kanarie schreef op maandag 09 mei 2005 @ 13:31:
daar hebben we VB -> C# converter voor
Werkt dat dan ?

[ Voor 45% gewijzigd door farlane op 10-05-2005 10:29 ]

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • alienfruit
  • Registratie: Maart 2003
  • Laatst online: 07-05 11:11

alienfruit

the alien you never expected

Kan je de forms niet gewoon geen border geven? Zo niet, je kan altijd nog WM_NCPAINT aanpassen ;)

  • Arie-Kanarie
  • Registratie: Juli 2004
  • Laatst online: 30-04 15:56

Arie-Kanarie

Een keer wat anders

farlane schreef op maandag 09 mei 2005 @ 19:09:
Kun je niet een of ander panel op je tab zetten en die op dezelfde 'hoogt' laten vallen als je tabjes. ( niet sunken oid )?

[edit]


[...]


Werkt dat dan ?
euh VB.NET naar C# ja dat werkt wel. Tenminste de meeste standaard code wel.
probeer deze maar eens: http://www.developerfusio...es/convertvbtocsharp.aspx

Software ontwikkelen in de Achterhoek voor leuke klanten door heel Nederland? Klik hier


  • alienfruit
  • Registratie: Maart 2003
  • Laatst online: 07-05 11:11

alienfruit

the alien you never expected

Kijk eens op: http://www.aisto.com/roeder/dotnet/
VB Applicatie compileren hier doorheen halen, en dan zeggen dat je C# code wil :)

Verwijderd

Kijk hier eens naar:

Op zich wel goede componenten en gratis voor niet commercieel gebruik:
http://www.divil.co.uk/net/

  • EfBe
  • Registratie: Januari 2000
  • Niet online
Verwijderd schreef op maandag 09 mei 2005 @ 12:52:
Hallo menschen,

ik wil graag mbv c#, iig in .net een tabbed mdi interface maken, dwz dat ik doormiddel van tabjes door mijn verschillende windows wil kunnen 'bladeren'. Hoe kan ik zoiets implementeren? Kan iemand mij op weg helpen, ik heb al gezocht en kon alleen voorbeelden in win32 en mfc vinden, waar ik in dit geval niets aan heb.

daarnaast heb ik het tabcontrol gecustomized, maar dit levert een lelijke rand op doordat de tabjes gedocked zitten aan het hoofdvenster, en de mdi vensters inzinken.

Ik hoop dat ik duidelijk genoeg ben geweest, maar misschien een beter voorbeeld: ik wil zoiets als visual studio.net interface creeeren, met verschillende vensters die aan een tabje kunnen hangen. Belangrijk is in ieder geval dat ik gebruik kan maken van meerdere windows in het hoofdwindow, dmv MDI.
Groet,
De Janus Winforms v2 controls gebruiken. Je hebt dan 1 main form dat de mdi host is en al je andere forms zijn gewone mdi childs. hij bakt zelf de tabs, de menu's worden gemerged etc. Kost je nog geen 5 minuten.

Je kunt ook zelf proberen het te maken, maar dan hoop ik dat je veel tijd hebt :)

offtopic:
Enne, RobIII: infragistics roeleert helemaal niet zo. Liever controls die het gewoon doen en iewat minder features dan controls met tig-duizend features die buggy zijn en waarbij je 3 maanden moet prutsen voordat ze doen wat ze moeten doen

[ Voor 11% gewijzigd door EfBe op 10-05-2005 17:20 ]

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com


Verwijderd

Topicstarter
Ik heb de oplossing gevonden:

1. Eerst een handle verkrijgen van de MDI client, normaliter gaat dit door het zoeken naar de window met de klassenaam "MDIClient" maar binnen winforms kan dit door alle controls te doorlopen en te zoeken naar een control van het type MDIClient

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
            MdiClient mdiClient = null;

            // Get the MdiClient from the parent form.
            for(int i = 0; i < this.Controls.Count; i++)
            {
                // If the form is an MDI container, it will contain an MdiClient control
                // just as it would any other control.
                mdiClient = this.Controls[i] as MdiClient;
                if(mdiClient != null)
                {
                    // The MdiClient control was found.
                    // ...
                    //

                    break;
                }
            }


2. Daarna de extended window style veranderen van de mdiclient doormiddel van p/invoke:
code:
1
2
3
4
5
6
7
8
9
10
            int exStyle = GetWindowLong(mdiClient.Handle, GWL_EXSTYLE);
            
            exStyle &= ~WS_EX_CLIENTEDGE;

            SetWindowLong(mdiClient.Handle, GWL_EXSTYLE, exStyle);

            SetWindowPos(mdiClient.Handle, IntPtr.Zero, 0, 0, 0, 0,
                SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOSIZE |
                SWP_NOZORDER | SWP_NOOWNERZORDER |
                SWP_FRAMECHANGED);


En klaar is kees.

Verwijderd

Topicstarter
De Janus Winforms v2 controls gebruiken. Je hebt dan 1 main form dat de mdi host is en al je andere forms zijn gewone mdi childs. hij bakt zelf de tabs, de menu's worden gemerged etc. Kost je nog geen 5 minuten.

Je kunt ook zelf proberen het te maken, maar dan hoop ik dat je veel tijd hebt
Had ik al genoemd dat het gratis moest zijn?

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
EfBe schreef op dinsdag 10 mei 2005 @ 17:19:
offtopic:
Enne, RobIII: infragistics roeleert helemaal niet zo. Liever controls die het gewoon doen en iewat minder features dan controls met tig-duizend features die buggy zijn en waarbij je 3 maanden moet prutsen voordat ze doen wat ze moeten doen
offtopic:
Mwo, sommige zijn inderdaad her en der wel eens een tikje buggy, maar écht hinder heb ik er nog niet van ondervonden (en onze klanten ook niet). De meeste bug(je)s programmeer je zo om heen of vangt ze af.
En 3 maanden prutsen heb ik al helemaal nog niet hoeven doen, ik vind de documentatie en samples uitstekend :?
.... Overigens gebruik ik voornamelijk het COM gebeuren en amper het .NET spul, dus daar kan ik niet zo over meebabbelen.

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 07-05 10:04
Verwijderd schreef op dinsdag 10 mei 2005 @ 17:23:
Ik heb de oplossing gevonden: ...
Dat ziet er niet bepaald oo uit moet ik zeggen. Is dit weer de platte WinAPI die je aan het aanspreken bent ?

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • Arie-Kanarie
  • Registratie: Juli 2004
  • Laatst online: 30-04 15:56

Arie-Kanarie

Een keer wat anders

farlane schreef op dinsdag 10 mei 2005 @ 19:11:
[...]


Dat ziet er niet bepaald oo uit moet ik zeggen. Is dit weer de platte WinAPI die je aan het aanspreken bent ?
Zoiets dacht ik ook al. Ach wie heeft gezegd dat met .NET de WinAPI verdwenen is??
Zou eigenlijk wel moeten (of zoiets heb ik al eens gehoord)... maar dit werkt ook, dus voor iedereen die het wil een oplossing.

Software ontwikkelen in de Achterhoek voor leuke klanten door heel Nederland? Klik hier


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:00
Arie-Kanarie schreef op dinsdag 10 mei 2005 @ 21:12:
[...]

Zou eigenlijk wel moeten (of zoiets heb ik al eens gehoord)...
Waarom ?

https://fgheysels.github.io/


  • EfBe
  • Registratie: Januari 2000
  • Niet online
Verwijderd schreef op dinsdag 10 mei 2005 @ 17:25:
[...]
Had ik al genoemd dat het gratis moest zijn?
Dat las ik later ja. Enne, beetje dimmen, ik probeer te helpen, maar mensen die zo'n toon aanslaan help ik niet.

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com


  • EfBe
  • Registratie: Januari 2000
  • Niet online
RobIII schreef op dinsdag 10 mei 2005 @ 17:26:
offtopic:
Mwo, sommige zijn inderdaad her en der wel eens een tikje buggy, maar écht hinder heb ik er nog niet van ondervonden (en onze klanten ook niet). De meeste bug(je)s programmeer je zo om heen of vangt ze af.
En 3 maanden prutsen heb ik al helemaal nog niet hoeven doen, ik vind de documentatie en samples uitstekend :?
.... Overigens gebruik ik voornamelijk het COM gebeuren en amper het .NET spul, dus daar kan ik niet zo over meebabbelen.
offtopic:
Aha, nou met die .NET controls is (was het iig) dat wel anders.

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com


  • alienfruit
  • Registratie: Maart 2003
  • Laatst online: 07-05 11:11

alienfruit

the alien you never expected

Kijk eens na de DevExpress componenten, werken erg lekker voor mij :)
Pagina: 1