login  Naam:   Wachtwoord: 
Registreer je!
 Forum

[C#] Ja of Nee Box (Opgelost)

Offline tomie94 - 27/01/2009 17:28 (laatste wijziging 27/01/2009 17:30)
Avatar van tomie94PHP interesse Hallo,

Ik ben bezig om C# te leren en het gaat nu aardig. Ik gebruik nu XNA om een 3D game te maken, nu ben ik daar nog lang(lang=1jaar) niet, maar ik wil wel alvast wat uitproberen met het XNA framework. Het gaat nu wel allemaal goed, totdat ik een Yes or No dialog wil weergeven. Hiervoor heb ik de volgende code:
  1. [DllImport("user32.dll", CharSet = CharSet.Auto)]
  2. public static extern uint MessageBox(IntPtr hWnd, String text, String caption, uint type);
  3. protected override void Update(GameTime gameTime)
  4. {
  5.  
  6. KeyboardState KeysOnKeyboard = Keyboard.GetState();
  7.  
  8. if (KeysOnKeyboard.IsKeyDown(Keys.E) && (KeysOnKeyboard.IsKeyDown(Keys.LeftControl) || KeysOnKeyboard.IsKeyDown(Keys.RightControl)))
  9. {
  10.  
  11. if ((MessageBox(new IntPtr(0), string.Format("Wilt u TDWoL sluiten?"), "Sluiten?", 4)) == 1)
  12. {
  13. this.Exit();
  14. }
  15.  
  16. }
  17.  
  18.  
  19.  
  20.  
  21. base.Update(gameTime);
  22. }


zoals je misschien zit wordt op regel 11 een messagebox aangemaakt met het type 4, type 4 betekend een yes/no dialog. met een if kijk ik of er op ja(yes)/no(nee) is gedrukt. Helaas werkt die if niet, want ook al druk ik op ja, het venster sluit niet. Met type 0 werkt het wel(alleen ok knop), dan sluit het venster wel.

Weet iemand hoe ik kan zorgen dat ook type 4 werkt?

Tom

PS: de hele code, voor als die nodig is:Plaatscode: 80446

3 antwoorden

Gesponsorde links
Offline Abbas - 27/01/2009 19:13 (laatste wijziging 27/01/2009 19:13)
Avatar van Abbas Gouden medaille

Crew .NET
Anders moet je eens je resultaat weergeven. Ik heb geen ervaring met XNA, maar kan je niet op een of andere manier dat resultaat in een string/integer steken en dan weergeven wat er dan wel gebeurt als je op de "Ja"-knop klikt? Bijvoorbeeld (is maar een probeersel):

  1. //resultaat van de MessageBox in een integer stoppen
  2. int result = MessageBox(new IntPtr(0), string.Format("Wilt u TDWoL sluiten?"), "Sluiten?", 4);
  3. //het resultaat in een andere MessageBox weergeven
  4. MessageBox(new IntPtr(0), string.Format("Resultaat: {0}", result), "Meh", 0);

Succes! 
Offline tomie94 - 28/01/2009 18:51
Avatar van tomie94 PHP interesse ok, het werkt nu allemaal door wat aanpassingen aan de namespaces kan ik nu gewoon System.Windows.Forms gebruiken. Nu wil ik graag ook, dat als de gebruiker op afsluitknop drukt(het x-je rechtsboven) dat je dan een Dialog krijgt met Wilt u aflsuiten etc. Weet iemand hoe ik dat voor elkaar krijg.

De code die ik nu heb is: Plaatscode: 81363
Offline Abbas - 28/01/2009 21:44 (laatste wijziging 28/01/2009 21:44)
Avatar van Abbas Gouden medaille

Crew .NET
Als je met Forms kan werken kan je een event FormClosing() aanroepen, dit vind je bij de Properties van je Form. Hierin zet je dan de volgende code:

  1. private void frmClose(object sender, FormClosingEventArgs e)
  2. {
  3. if (MessageBox.Show("Sluiten?", "Info", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)
  4. Close();
  5. }

Succes!
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.208s