Я не могу ловить эту ошибку (StackOverFlowException)

introducir la descripción de la imagen aquí

В проекте, который я делаю, у меня есть эта ошибка, которую мне не удается обнаружить. Это главный формуляр с TabControl, который загружают другие формуляры внутри каждой из Ваших закладок. В alguién он переместил что-то похожее его? Какая-то идея, состоящая в том, что он может производить это?

- Я издаю:

Спасибо за ответ. Он повторяет мне эти три линии снова и снова (Также я издаю изображение):

MdiTabControl.dll! MdiTabControl. TabControl. TabPageCollection.set_IndexOf (MdiTabControl. TabPage TabPage, Integer оцените) Линию 287 + 0xd Байт

MdiTabControl.dll! MdiTabControl. TabControl. SelectItem (MdiTabControl. TabPage TabPage) Линия 1607 + 0x22 Байт MdiTabControl.dll!

MdiTabControl. TabControl. ArrangeItems () Линия 1532 + 0x46 Байт

Я не знаю очень хорошо, что он пробует сделать контроль точно. Он случается обычно, изменив экран или приуменьшив, достаточно случайным способом (не всегда он случается). Какая-то идея, состоящая в том, что он мог бы производить это? Менять контроль на самого VS могло бы решать это?

EDIT2: Это единственные линии кода, где он контролирует MDItabcontrol:

Public Sub openForm(ByRef frm As Form)
    Try

    TabControl1.Visible = True
        TabControl1.TabPages.Add(frm)
    Catch ex As Exception
        MsgBox(ex.Message)
    End Try
End Sub

 Private Sub resizeform(ByVal sender As System.Object)
    Try
    TabControl1.Width = sender.Size.Width - 20
        TabControl1.Height = sender.Size.Height - ToolStrip1.Height - TabControl1.TabHeight
    Catch ex As Exception
        MsgBox(ex.Message)
    End Try
End Sub
Private Sub Form1_SizeChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Resize
    If Me.Visible Then
        resizeform(sender)
    End If
End Sub
Public Sub repintarfondo()
    Try
        If TabControl1.TabPages.Count = 1 Then
            TabControl1.Visible = False
        End If
    Catch ex As Exception
        MsgBox(ex.Message)
    End Try
End Sub

Поскольку вы можете видеть, у меня нет никакого события для тех, которые появляются в изображении. Поэтому он удивляет меня так.

Приветствие и спасибо за помощь.

2
задан 03.06.2016, 10:39
3 ответа

Это ошибка избытка батарейки вызовов.

Когда производится исключение, смотри окно батарейки вызовов.

Эта ошибка случается, когда встречаются перекурсивные операции. Хорошо метод называет сам себя перекурсивным способом или звонит в метод, который в свою очередь звонит в начальный метод.

Это вызывает, что приложение между в бесконечном цикле реализовывая названные к этому методу до тех пор, пока он не прибывает на пределе превосхождения предела батарейки вызовов и случается ошибка.

Как он говорил тебе, проверь окно батарейки вызовов в моменте, в котором случается ошибка, и ты сможешь видеть или методы, которые производят проблему.

1
ответ дан 24.11.2019, 14:15

StackOverflow - типичная ошибка бесконечного возврата. В твоем случае, есть ясный подозреваемый

Private Sub Form1_SizeChanged....
    .....
    resizeform(sender)

видимо ты меняешь размер form на событие изменения размера этого form. Он пахнет у меня бесконечно перекурсивом....

1
ответ дан 24.11.2019, 14:15

StackOverflowException - один excepciГіn, что не может контролироваться кроме того, что будет брошен самим cГіdigo, который ты программируешь. Самое рекомендуемое для этих случаев состоит в том, чтобы проверять батарейку ejecuciГіn, так как оно типично происходит, когда встречаются бесконечные циклы вызовов, уже будьте в перекурсивных функциях непрямая или прямая. SegГєn я вижу проблему эта в контроле MdiTabControl, что ты мог бы делать, состоит в том, чтобы загружать код этого, который находит в codeproject , и использовать это как ссылка, чтобы оценивать с большей деталью, которые являются факторами, что probocan исключение

0
ответ дан 24.11.2019, 14:15

Теги

Похожие вопросы