Info.Designer.cs this.ResumeLayout(false); gibt System.StackOverFlow?

  • C#
  • .NET (FX) 4.5–4.8

Es gibt 18 Antworten in diesem Thema. Der letzte Beitrag () ist von ThePlexian.

    Info.Designer.cs this.ResumeLayout(false); gibt System.StackOverFlow?

    Hallo,

    die Designer.cs meiner Form gibt bei der Codestelle this.ResumeLayout(false); einen System.StackOverFlow Fehler aus.

    Hier der Designer Code:
    Spoiler anzeigen

    C#-Quellcode

    1. namespace MisteryDungeon
    2. {
    3. partial class Info
    4. {
    5. /// <summary>
    6. /// Erforderliche Designervariable.
    7. /// </summary>
    8. private System.ComponentModel.IContainer components = null;
    9. /// <summary>
    10. /// Verwendete Ressourcen bereinigen.
    11. /// </summary>
    12. /// <param name="disposing">True, wenn verwaltete Ressourcen gelöscht werden sollen; andernfalls False.</param>
    13. protected override void Dispose(bool disposing)
    14. {
    15. if (disposing && (components != null))
    16. {
    17. components.Dispose();
    18. }
    19. base.Dispose(disposing);
    20. }
    21. #region Vom Windows Form-Designer generierter Code
    22. /// <summary>
    23. /// Erforderliche Methode für die Designerunterstützung.
    24. /// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden.
    25. /// </summary>
    26. private void InitializeComponent()
    27. {
    28. this.pictureBox1 = new System.Windows.Forms.PictureBox();
    29. this.label1 = new System.Windows.Forms.Label();
    30. this.pictureBox3 = new System.Windows.Forms.PictureBox();
    31. this.pictureBox4 = new System.Windows.Forms.PictureBox();
    32. this.pictureBox5 = new System.Windows.Forms.PictureBox();
    33. this.pictureBox6 = new System.Windows.Forms.PictureBox();
    34. this.pictureBox7 = new System.Windows.Forms.PictureBox();
    35. this.pictureBox8 = new System.Windows.Forms.PictureBox();
    36. ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
    37. ((System.ComponentModel.ISupportInitialize)(this.pictureBox3)).BeginInit();
    38. ((System.ComponentModel.ISupportInitialize)(this.pictureBox4)).BeginInit();
    39. ((System.ComponentModel.ISupportInitialize)(this.pictureBox5)).BeginInit();
    40. ((System.ComponentModel.ISupportInitialize)(this.pictureBox6)).BeginInit();
    41. ((System.ComponentModel.ISupportInitialize)(this.pictureBox7)).BeginInit();
    42. ((System.ComponentModel.ISupportInitialize)(this.pictureBox8)).BeginInit();
    43. this.SuspendLayout();
    44. //
    45. // pictureBox1
    46. //
    47. this.pictureBox1.Location = new System.Drawing.Point(63, 37);
    48. this.pictureBox1.Name = "pictureBox1";
    49. this.pictureBox1.Size = new System.Drawing.Size(20, 20);
    50. this.pictureBox1.TabIndex = 0;
    51. this.pictureBox1.TabStop = false;
    52. //
    53. // label1
    54. //
    55. this.label1.AutoSize = true;
    56. this.label1.Location = new System.Drawing.Point(89, 41);
    57. this.label1.Name = "label1";
    58. this.label1.Size = new System.Drawing.Size(13, 13);
    59. this.label1.TabIndex = 2;
    60. this.label1.Text = "0";
    61. //
    62. // pictureBox3
    63. //
    64. this.pictureBox3.Location = new System.Drawing.Point(8, 12);
    65. this.pictureBox3.Name = "pictureBox3";
    66. this.pictureBox3.Size = new System.Drawing.Size(20, 20);
    67. this.pictureBox3.TabIndex = 4;
    68. this.pictureBox3.TabStop = false;
    69. //
    70. // pictureBox4
    71. //
    72. this.pictureBox4.Location = new System.Drawing.Point(34, 12);
    73. this.pictureBox4.Name = "pictureBox4";
    74. this.pictureBox4.Size = new System.Drawing.Size(20, 20);
    75. this.pictureBox4.TabIndex = 5;
    76. this.pictureBox4.TabStop = false;
    77. //
    78. // pictureBox5
    79. //
    80. this.pictureBox5.Location = new System.Drawing.Point(60, 12);
    81. this.pictureBox5.Name = "pictureBox5";
    82. this.pictureBox5.Size = new System.Drawing.Size(20, 20);
    83. this.pictureBox5.TabIndex = 6;
    84. this.pictureBox5.TabStop = false;
    85. //
    86. // pictureBox6
    87. //
    88. this.pictureBox6.Location = new System.Drawing.Point(86, 12);
    89. this.pictureBox6.Name = "pictureBox6";
    90. this.pictureBox6.Size = new System.Drawing.Size(20, 20);
    91. this.pictureBox6.TabIndex = 9;
    92. this.pictureBox6.TabStop = false;
    93. //
    94. // pictureBox7
    95. //
    96. this.pictureBox7.Location = new System.Drawing.Point(112, 12);
    97. this.pictureBox7.Name = "pictureBox7";
    98. this.pictureBox7.Size = new System.Drawing.Size(20, 20);
    99. this.pictureBox7.TabIndex = 8;
    100. this.pictureBox7.TabStop = false;
    101. //
    102. // pictureBox8
    103. //
    104. this.pictureBox8.Location = new System.Drawing.Point(138, 12);
    105. this.pictureBox8.Name = "pictureBox8";
    106. this.pictureBox8.Size = new System.Drawing.Size(20, 20);
    107. this.pictureBox8.TabIndex = 7;
    108. this.pictureBox8.TabStop = false;
    109. //
    110. // Info
    111. //
    112. this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
    113. this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
    114. this.ClientSize = new System.Drawing.Size(166, 66);
    115. this.ControlBox = false;
    116. this.Controls.Add(this.pictureBox6);
    117. this.Controls.Add(this.pictureBox7);
    118. this.Controls.Add(this.pictureBox8);
    119. this.Controls.Add(this.pictureBox5);
    120. this.Controls.Add(this.pictureBox4);
    121. this.Controls.Add(this.pictureBox3);
    122. this.Controls.Add(this.label1);
    123. this.Controls.Add(this.pictureBox1);
    124. this.MaximizeBox = false;
    125. this.MinimizeBox = false;
    126. this.Name = "Info";
    127. this.Text = "Info";
    128. this.Load += new System.EventHandler(this.Info_Load);
    129. ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
    130. ((System.ComponentModel.ISupportInitialize)(this.pictureBox3)).EndInit();
    131. ((System.ComponentModel.ISupportInitialize)(this.pictureBox4)).EndInit();
    132. ((System.ComponentModel.ISupportInitialize)(this.pictureBox5)).EndInit();
    133. ((System.ComponentModel.ISupportInitialize)(this.pictureBox6)).EndInit();
    134. ((System.ComponentModel.ISupportInitialize)(this.pictureBox7)).EndInit();
    135. ((System.ComponentModel.ISupportInitialize)(this.pictureBox8)).EndInit();
    136. this.ResumeLayout(false);
    137. this.PerformLayout();
    138. }
    139. #endregion
    140. public System.Windows.Forms.Label label1;
    141. public System.Windows.Forms.PictureBox pictureBox3;
    142. public System.Windows.Forms.PictureBox pictureBox4;
    143. public System.Windows.Forms.PictureBox pictureBox5;
    144. public System.Windows.Forms.PictureBox pictureBox6;
    145. public System.Windows.Forms.PictureBox pictureBox7;
    146. public System.Windows.Forms.PictureBox pictureBox8;
    147. private System.Windows.Forms.PictureBox pictureBox1;
    148. }
    149. }



    Es lief alles doch als ich den 3 neuen Buttons in einer anderen Form ein KlickEvent gab (dass über eine Funktion der Hauptform in der InfoForm Bilder bzw. Labels ändert) kam der Fehler

    Hier der Code der Shop Form
    Spoiler anzeigen

    C#-Quellcode

    1. using System;
    2. using System.Collections.Generic;
    3. using System.ComponentModel;
    4. using System.Data;
    5. using System.Drawing;
    6. using System.Linq;
    7. using System.Text;
    8. using System.Windows.Forms;
    9. namespace MisteryDungeon
    10. {
    11. public partial class Shop : Form
    12. {
    13. Dungeon Dungeon = new Dungeon();
    14. public Shop()
    15. {
    16. InitializeComponent();
    17. }
    18. private void Shop_Load(object sender, EventArgs e)
    19. {
    20. this.button1.Image = Image.FromFile("shop/heart_1.png");
    21. this.button2.Image = Image.FromFile("shop/heart_3.png");
    22. this.button3.Image = Image.FromFile("shop/heart_full.png");
    23. }
    24. private void button1_Click(object sender, EventArgs e)
    25. {
    26. if (Dungeon.Goldmünzen >= 15)
    27. {
    28. Dungeon.Goldmünzen -= 15;
    29. Dungeon.Leben += 1;
    30. if (Dungeon.Leben > 6)
    31. {
    32. Dungeon.Leben = 6;
    33. }
    34. Dungeon.InfoSetzen();
    35. }
    36. else
    37. {
    38. MessageBox.Show("Du brauchst 15 Goldmünzen!", "Du hast nicht genügend Goldmünzen!", MessageBoxButtons.OK, MessageBoxIcon.Error);
    39. }
    40. }
    41. private void button2_Click(object sender, EventArgs e)
    42. {
    43. if (Dungeon.Goldmünzen >= 35)
    44. {
    45. Dungeon.Goldmünzen -= 35;
    46. Dungeon.Leben += 3;
    47. if (Dungeon.Leben > 6)
    48. {
    49. Dungeon.Leben = 6;
    50. }
    51. Dungeon.InfoSetzen();
    52. }
    53. else
    54. {
    55. MessageBox.Show("Du brauchst 35 Goldmünzen!", "Du hast nicht genügend Goldmünzen!", MessageBoxButtons.OK, MessageBoxIcon.Error);
    56. }
    57. }
    58. private void button3_Click(object sender, EventArgs e)
    59. {
    60. if (Dungeon.Goldmünzen >= 45)
    61. {
    62. Dungeon.Goldmünzen -= 45;
    63. Dungeon.Leben += 6;
    64. if (Dungeon.Leben > 6)
    65. {
    66. Dungeon.Leben = 6;
    67. }
    68. Dungeon.InfoSetzen();
    69. }
    70. else
    71. {
    72. MessageBox.Show("Du brauchst 45 Goldmünzen!", "Du hast nicht genügend Goldmünzen!", MessageBoxButtons.OK, MessageBoxIcon.Error);
    73. }
    74. }
    75. }
    76. }

    There are only 10 types of people in the world: Those who understand binary and those who don't.
    Wo geht der Stack denn hin?
    Schau Dir mal die Aufrufliste an (in der Menüleiste unter Debuggen -> Weitere Fenster -> Aufrufliste).
    Poste eventuell einen Screenshot, wenn Du mit den Infos darin nicht zurechtkommst. Die Liste wird ziemlich lang sein, aber irgendwo wird sie sich vermutlich wiederholen. Und irgendwo in einer Methode, die sich wiederholt, liegt das Problem.
    (PS: Die Liste wächst von unten nach oben. Also Program.Main ist ganz unten und die aktuelle Methode ist ganz oben)
    "Luckily luh... luckily it wasn't poi-"
    -- Brady in Wonderland, 23. Februar 2015, 1:56
    Desktop Pinner | ApplicationSettings | OnUtils
    Hier das Bild:



    MisteryDungeon.exe!MisteryDungeon.Shop.Shop() Zeile 15 + 0x15 Bytes C#
    und
    MisteryDungeon.exe!MisteryDungeon.Dungeon.Dungeon() Zeile 18 + 0x15 Bytes C#
    wiederholen sich sehr oft und ganz unten in der Liste steht:
    Die von Visual Studio maximal unterstützte Stapelrahmenanzahl wurde überschritten.

    Die ganze liste besteht nur aus diesen 3 Zeilen und dem IntializeComponent in der 1. Zeile der Liste.
    There are only 10 types of people in the world: Those who understand binary and those who don't.

    DragonSlayerMarc schrieb:

    C#-Quellcode

    1. Dungeon Dungeon = new Dungeon();
    Pack das mal in die Form_Load oder iwo in eine Prozedur, wo es nach dem Konstruktor aufgerufen wird.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Danke @RodFromGermany jz läuft wieder alles. :D

    EDIT: Nicht!

    Ich habe Dungeon Dungeon = new Dungeon(); in das Load Event getan, nur muss ich dann in die 3 Button Klick Events dies ebenfalls einfügen.
    Dadurch rufen die Buttons immer einen neuen Dungeon auf dadurch ist der Shop nicht benutzbar, wenn ich es aber Global unter dem Konstrukter (oder egal wo) deklariere kommt wieder System.StackOverFlowException

    /EDIT
    There are only 10 types of people in the world: Those who understand binary and those who don't.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „DragonSlayerMarc“ ()

    Einfach den Code so umschreiben, dass nicht endlos Instanzen entstehen?
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Eine bool Abfrage oder sowaa in der Art?
    Ich weiss auch nicht ganz wie ich dass realisieren soll, kann mir jemand ne Hilfestellung geben?
    There are only 10 types of people in the world: Those who understand binary and those who don't.
    Warum werden überhaupt gegenseitig Instanzen erzeugt? Darin sehe ich keinen Sinn.
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Im shop muss ich eine dungeon Instanz machen damit ich auf eine FU Aktion zugreifen kann die dass gold und dass runteraetzt

    Im dungeon brauc ich eine shop Instanz um den shop anzuzeigen und dass
    There are only 10 types of people in the world: Those who understand binary and those who don't.

    DragonSlayerMarc schrieb:

    Kann man dass irgendwie verhindern?
    Du hast das Prinzip nicht verstanden.

    C#-Quellcode

    1. Dungeon Dungeon; // in die Klasse
    2. //--------------
    3. this.Dungeon = new Dungeon(); // in eine Prozedur

    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Im shop muss ich eine dungeon Instanz machen damit ich auf eine FU Aktion zugreifen kann die dass gold und dass runteraetzt

    Im dungeon brauc ich eine shop Instanz um den shop anzuzeigen und dass
    Tja, da hast du ein Architektur-Problem.
    Guggemol VeryBasics - Abschnitt "prinzipieller Aufbau eines Programms"

    RodFromGermany schrieb:

    DragonSlayerMarc schrieb:

    Kann man dass irgendwie verhindern?
    Du hast das Prinzip nicht verstanden.

    C#-Quellcode

    1. Dungeon Dungeon; // in die Klasse
    2. //--------------
    3. this.Dungeon = new Dungeon(); // in eine Prozedur



    Das habe ich nun, soweit funktioniert auch alles bloß, wenn ich etwas kaufen möchte sagt er immer zu wenig Gold, obwohl ich mehr als genug habe! Dass ist dass einzige was nicht geht.

    Hier nochmal die Code Abschnitte:
    Shop.cs
    Spoiler anzeigen

    C#-Quellcode

    1. using System;
    2. using System.Collections.Generic;
    3. using System.ComponentModel;
    4. using System.Data;
    5. using System.Drawing;
    6. using System.Linq;
    7. using System.Text;
    8. using System.Windows.Forms;
    9. namespace MisteryDungeon
    10. {
    11. public partial class Shop : Form
    12. {
    13. Dungeon Dungeon;
    14. public Shop()
    15. {
    16. InitializeComponent();
    17. }
    18. private void Shop_Load(object sender, EventArgs e)
    19. {
    20. this.Dungeon = new Dungeon();
    21. this.button1.Image = Image.FromFile("shop/heart_1.png");
    22. this.button2.Image = Image.FromFile("shop/heart_3.png");
    23. this.button3.Image = Image.FromFile("shop/heart_full.png");
    24. }
    25. private void button1_Click(object sender, EventArgs e)
    26. {
    27. if (Dungeon.Goldmünzen >= 15)
    28. {
    29. Dungeon.Goldmünzen -= 15;
    30. Dungeon.Leben += 1;
    31. if (Dungeon.Leben > 6)
    32. {
    33. Dungeon.Leben = 6;
    34. }
    35. Dungeon.InfoSetzen();
    36. }
    37. else
    38. {
    39. MessageBox.Show("Du brauchst 15 Goldmünzen!", "Du hast nicht genügend Goldmünzen!", MessageBoxButtons.OK, MessageBoxIcon.Error);
    40. }
    41. }
    42. private void button2_Click(object sender, EventArgs e)
    43. {
    44. if (Dungeon.Goldmünzen >= 35)
    45. {
    46. Dungeon.Goldmünzen -= 35;
    47. Dungeon.Leben += 3;
    48. if (Dungeon.Leben > 6)
    49. {
    50. Dungeon.Leben = 6;
    51. }
    52. Dungeon.InfoSetzen();
    53. }
    54. else
    55. {
    56. MessageBox.Show("Du brauchst 35 Goldmünzen!", "Du hast nicht genügend Goldmünzen!", MessageBoxButtons.OK, MessageBoxIcon.Error);
    57. }
    58. }
    59. private void button3_Click(object sender, EventArgs e)
    60. {
    61. if (Dungeon.Goldmünzen >= 45)
    62. {
    63. Dungeon.Goldmünzen -= 45;
    64. Dungeon.Leben += 6;
    65. if (Dungeon.Leben > 6)
    66. {
    67. Dungeon.Leben = 6;
    68. }
    69. Dungeon.InfoSetzen();
    70. }
    71. else
    72. {
    73. MessageBox.Show("Du brauchst 45 Goldmünzen!", "Du hast nicht genügend Goldmünzen!", MessageBoxButtons.OK, MessageBoxIcon.Error);
    74. }
    75. }
    76. }
    77. }


    EDIT:

    Hat sich geklärt, hab ne veralteteVariable überprüft. Die neue hab ich ganz vergessen.

    /EDIT
    There are only 10 types of people in the world: Those who understand binary and those who don't.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „DragonSlayerMarc“ ()

    DragonSlayerMarc schrieb:

    Dass ist dass einzige was nicht geht.
    Dann musst Du mal Dein Programm debuggen. Gugst Du hier.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Ich habe mir mal erlaubt einen Teil deines Programmes Aufzuräumen. Ich habe inhaltlich nix korrigiert!

    Spoiler anzeigen

    C#-Quellcode

    1. private void button1_Click(object sender, EventArgs e)
    2. {
    3. Einkaufen(15);
    4. }
    5. private void button2_Click(object sender, EventArgs e)
    6. {
    7. Einkaufen(35);
    8. }
    9. private void button3_Click(object sender, EventArgs e)
    10. {
    11. Einkaufen(45);
    12. }
    13. private void Einkaufen(int Kosten)
    14. {
    15. if (Dungeon.Goldmünzen >= Kosten)
    16. {
    17. Dungeon.Goldmünzen -= Kosten;
    18. Dungeon.Leben += 3;
    19. if (Dungeon.Leben > 6)
    20. {
    21. Dungeon.Leben = 6;
    22. }
    23. Dungeon.InfoSetzen();
    24. }
    25. else
    26. {
    27. MessageBox.Show(string.Format("Du brauchst {0} Goldmünzen!", Convert.ToString(Kosten)), "Du hast nicht genügend Goldmünzen!", MessageBoxButtons.OK, MessageBoxIcon.Error);
    28. }
    29. }
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."
    @Schamash

    Wenn dann so:

    Spoiler anzeigen

    C#-Quellcode

    1. private void button1_Click(object sender, EventArgs e)
    2. {
    3. Einkaufen(15);
    4. }
    5. private void button2_Click(object sender, EventArgs e)
    6. {
    7. Einkaufen(35);
    8. }
    9. private void button3_Click(object sender, EventArgs e)
    10. {
    11. Einkaufen(45);
    12. }
    13. private void Einkaufen(int Kosten, int LebenPlus)
    14. {
    15. if (Dungeon.Goldmünzen >= Kosten)
    16. {
    17. Dungeon.Goldmünzen -= Kosten;
    18. Dungeon.Leben += LebenPlus;
    19. if (Dungeon.Leben > 6)
    20. {
    21. Dungeon.Leben = 6;
    22. }
    23. Dungeon.InfoSetzen();
    24. }
    25. else
    26. {
    27. MessageBox.Show(string.Format("Du brauchst {0} Goldmünzen!", Convert.ToString(Kosten)), "Du hast nicht genügend Goldmünzen!", MessageBoxButtons.OK, MessageBoxIcon.Error);
    28. }
    29. }



    Schau dir meinen vorherigen Post nochmal an, denn nicht alle Artikel geben 3 Lebenspunkte sondern nur eins, die anderen +1 und +6
    There are only 10 types of people in the world: Those who understand binary and those who don't.
    @DragonSlayerMarc es schön das du es angepasst und nicht einfach übernommen hast. Es ging mir auch nur darum zu Zeigen das der Code so viel einfach zu kontrollieren ist, da er viel Übersichtlicher ist.
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."

    DragonSlayerMarc schrieb:

    C#-Quellcode

    1. Dungeon.Leben += LebenPlus;
    2. if (Dungeon.Leben > 6)
    3. {
    4. Dungeon.Leben = 6;
    5. }
    ==

    C#-Quellcode

    1. Dungeon.Leben = Math.Min(Dungeon.Leben + LebenPlus, 6);

    »There's no need to "teach" atheism. It's the natural result of education without indoctrination.« — Ricky Gervais