0

長い間、私は1ページに約40個のチェックボックスと40個のボタンを使用していました。チェックボックスの各状態はIOに保存されました。同じ量のチェックボックスとボタンを使用して別のページを作成したので、ページの読み込みを高速化することについて少し考えました。突然...エミュレータを使用しました...この大きなページを起動しているときに、アプリが50%のケースでクラッシュします。(40チェックボックス+ 40ボタン)4ページ(それぞれ10チェックボックス+ 10ボタン)に分割しましたが、問題が発生し続けます。このページを2回目に起動すると、エラーが発生します。実際、1ページでは、すべて問題ありません。

System.ArgumentOutOfRangeException is the error  

列をなして :

  cb11.IsChecked = cbStates(10)

これはコードです:

Imports System
Imports System.Collections.Generic
Imports System.Linq
Imports System.Net
Imports System.Windows
Imports System.Windows.Controls
Imports System.Windows.Documents
Imports System.Windows.Input
Imports System.Windows.Media
Imports System.Windows.Media.Animation
Imports System.Windows.Shapes
Imports Microsoft.Phone.Controls
Partial Public Class Weidersix2
    Inherits PhoneApplicationPage
    Private cbStates As List(Of Boolean)
    ' Constructor
    Public Sub New()
        InitializeComponent()
        cbStates = New List(Of Boolean)()
    End Sub
    Protected Overrides Sub OnNavigatedTo(e As System.Windows.Navigation.NavigationEventArgs)
        MyBase.OnNavigatedTo(e)
        cbStates = DB.readStates()
        If cbStates.Count > 0 Then
            cb11.IsChecked = cbStates(10)
            cb12.IsChecked = cbStates(11)
            cb13.IsChecked = cbStates(12)
            cb14.IsChecked = cbStates(13)
            cb15.IsChecked = cbStates(14)
            cb16.IsChecked = cbStates(15)
            cb17.IsChecked = cbStates(16)
            cb18.IsChecked = cbStates(17)
            cb19.IsChecked = cbStates(18)
            cb20.IsChecked = cbStates(19)
        Else
            If cb11.IsChecked = True Then
                cbStates.Add(True)
            Else
                cbStates.Add(False)
            End If
            If cb12.IsChecked = True Then
                cbStates.Add(True)
            Else
                cbStates.Add(False)
            End If
            If cb13.IsChecked = True Then
                cbStates.Add(True)
            Else
                cbStates.Add(False)
            End If
            If cb14.IsChecked = True Then
                cbStates.Add(True)
            Else
                cbStates.Add(False)
            End If
            If cb15.IsChecked = True Then
                cbStates.Add(True)
            Else
                cbStates.Add(False)
            End If
            If cb16.IsChecked = True Then
                cbStates.Add(True)
            Else
                cbStates.Add(False)
            End If
            If cb17.IsChecked = True Then
                cbStates.Add(True)
            Else
                cbStates.Add(False)
            End If
            If cb18.IsChecked = True Then
                cbStates.Add(True)
            Else
                cbStates.Add(False)
            End If
            If cb19.IsChecked = True Then
                cbStates.Add(True)
            Else
                cbStates.Add(False)
            End If
            If cb20.IsChecked = True Then
                cbStates.Add(True)
            Else
                cbStates.Add(False)
            End If

        End If
    End Sub
    Protected Overrides Sub OnNavigatedFrom(e As System.Windows.Navigation.NavigationEventArgs)
        MyBase.OnNavigatedFrom(e)
        DB.saveStates(cbStates)
    End Sub
    Private Sub cb11_Checked(sender As Object, e As RoutedEventArgs)
        If cbStates.Count > 0 Then
            cbStates(10) = True
        End If
    End Sub

    Private Sub cb11_Unchecked(sender As Object, e As RoutedEventArgs)
        If cbStates.Count > 0 Then
            cbStates(10) = False
        End If

    End Sub
    Private Sub cb12_Checked(sender As Object, e As RoutedEventArgs)
        If cbStates.Count > 0 Then
            cbStates(11) = True
        End If
    End Sub

    Private Sub cb12_Unchecked(sender As Object, e As RoutedEventArgs)
        If cbStates.Count > 0 Then
            cbStates(11) = False
        End If

    End Sub
    Private Sub cb13_Checked(sender As Object, e As RoutedEventArgs)
        If cbStates.Count > 0 Then
            cbStates(12) = True
        End If
    End Sub

    Private Sub cb13_Unchecked(sender As Object, e As RoutedEventArgs)
        If cbStates.Count > 0 Then
            cbStates(12) = False
        End If

    End Sub
    Private Sub cb14_Checked(sender As Object, e As RoutedEventArgs)
        If cbStates.Count > 0 Then
            cbStates(13) = True
        End If
    End Sub

    Private Sub cb14_Unchecked(sender As Object, e As RoutedEventArgs)
        If cbStates.Count > 0 Then
            cbStates(13) = False
        End If

    End Sub
    Private Sub cb15_Checked(sender As Object, e As RoutedEventArgs)
        If cbStates.Count > 0 Then
            cbStates(14) = True
        End If
    End Sub

    Private Sub cb15_Unchecked(sender As Object, e As RoutedEventArgs)
        If cbStates.Count > 0 Then
            cbStates(14) = False
        End If

    End Sub
    Private Sub cb16_Checked(sender As Object, e As RoutedEventArgs)
        If cbStates.Count > 0 Then
            cbStates(15) = True
        End If
    End Sub

    Private Sub cb16_Unchecked(sender As Object, e As RoutedEventArgs)
        If cbStates.Count > 0 Then
            cbStates(15) = False
        End If

    End Sub
    Private Sub cb17_Checked(sender As Object, e As RoutedEventArgs)
        If cbStates.Count > 0 Then
            cbStates(16) = True
        End If
    End Sub

    Private Sub cb17_Unchecked(sender As Object, e As RoutedEventArgs)
        If cbStates.Count > 0 Then
            cbStates(16) = False
        End If

    End Sub
    Private Sub cb18_Checked(sender As Object, e As RoutedEventArgs)
        If cbStates.Count > 0 Then
            cbStates(17) = True
        End If
    End Sub

    Private Sub cb18_Unchecked(sender As Object, e As RoutedEventArgs)
        If cbStates.Count > 0 Then
            cbStates(17) = False
        End If

    End Sub
    Private Sub cb19_Checked(sender As Object, e As RoutedEventArgs)
        If cbStates.Count > 0 Then
            cbStates(18) = True
        End If
    End Sub

    Private Sub cb19_Unchecked(sender As Object, e As RoutedEventArgs)
        If cbStates.Count > 0 Then
            cbStates(18) = False
        End If

    End Sub
    Private Sub cb20_Checked(sender As Object, e As RoutedEventArgs)
        If cbStates.Count > 0 Then
            cbStates(19) = True
        End If
    End Sub

    Private Sub cb20_Unchecked(sender As Object, e As RoutedEventArgs)
        If cbStates.Count > 0 Then
            cbStates(19) = False
        End If
    End Sub
End Class
4

1 に答える 1

1

それほど多くの状態が保存されていないようです。ロジックを次のように変更してみてください。

       If cbStates.Count >= 20 Then
        cb11.IsChecked = cbStates(10)

存在しない状態を読み取ろうとしています。

于 2012-12-19T19:00:43.483 に答える