Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#选择更改索引超出范围_C#_Winrt Xaml - Fatal编程技术网

C#选择更改索引超出范围

C#选择更改索引超出范围,c#,winrt-xaml,C#,Winrt Xaml,当我选择该项时,网格将完美工作,但。。。当我按下左键选择其他练习时,应用程序将崩溃 代码如下: int specialbtnId = 0; private void gvSpecialPagesViewExercise_SelectionChanged(object sender, SelectionChangedEventArgs e) { switch (specialbtnId) { case 0: LoadSpecialP

当我选择该项时,网格将完美工作,但。。。当我按下左键选择其他练习时,应用程序将崩溃

代码如下:

int specialbtnId = 0;

private void gvSpecialPagesViewExercise_SelectionChanged(object sender,
    SelectionChangedEventArgs e)
{
    switch (specialbtnId)
    {
        case 0:
            LoadSpecialPagesBookExcersices(lstCurrentPageLeftButton1Excersices
                .ElementAt(gvSpecialPagesViewExercise.SelectedIndex));
            break;
        case 1:
            LoadSpecialPagesBookExcersices(lstCurrentPageLeftButton2Excersices
                .ElementAt(gvSpecialPagesViewExercise.SelectedIndex));
            break;
        case 2:
            LoadSpecialPagesBookExcersices(lstCurrentPageLeftButton3Excersices
                .ElementAt(gvSpecialPagesViewExercise.SelectedIndex));
            break;
        case 3:
            LoadSpecialPagesBookExcersices(lstCurrentPageLeftButton4Excersices
                .ElementAt(gvSpecialPagesViewExercise.SelectedIndex));
            break;
    }
} 
这是另一个通风按钮,是我现在唯一用来更改练习和部分练习的代码

private void UpdateLeftButtonContent()
    {
        ResetSpecialPagesButtonColors();
        if (currentPageSettings.PageStyle.Contains("Especiales"))
        {
            if (lstCurrentPageLeftButton1Excersices != null)
                lstCurrentPageLeftButton1Excersices.Clear();
            if (lstCurrentPageLeftButton2Excersices != null)
                lstCurrentPageLeftButton2Excersices.Clear();
            if (lstCurrentPageLeftButton3Excersices != null)
                lstCurrentPageLeftButton3Excersices.Clear();
            if (lstCurrentPageLeftButton4Excersices != null)
                lstCurrentPageLeftButton4Excersices.Clear();
            foreach (BookExercises x in lstCurrentPageBookExercises)
            {
                if (x.AssignmentCode == 0 && x.Id == 0)
                {
                    lstCurrentPageLeftButton1Excersices.Add(x);
                }
                if (x.AssignmentCode == 0 && x.Id == 1)
                {
                    lstCurrentPageLeftButton2Excersices.Add(x);
                }
                if (x.AssignmentCode == 0 && x.Id == 2)
                {
                    lstCurrentPageLeftButton3Excersices.Add(x);
                }
                if (x.AssignmentCode == 0 && x.Id == 3)
                {
                    lstCurrentPageLeftButton4Excersices.Add(x);
                }
            }
            if (lstCurrentPageLeftButton1Excersices.Count > 0)
            {
                btn1SpecialPages.DataContext = lstCurrentPageLeftButton1Excersices.ElementAt(0);
            }
            if (lstCurrentPageLeftButton2Excersices.Count > 0)
            {
                btn2SpecialPages.DataContext = lstCurrentPageLeftButton2Excersices.ElementAt(0);
                btn2SpecialPages.Visibility = Visibility.Visible;
                btn2Line.Visibility = Visibility.Visible;

            }
            else
            {
                btn2SpecialPages.Visibility = Visibility.Collapsed;
                btn3SpecialPages.Visibility = Visibility.Collapsed;
                btn4SpecialPages.Visibility = Visibility.Collapsed;
                btn2Line.Visibility = Visibility.Collapsed;
                btn3line.Visibility = Visibility.Collapsed;
                btn4line.Visibility = Visibility.Collapsed;

            }
            if (lstCurrentPageLeftButton3Excersices.Count > 0)
            {
                btn3SpecialPages.DataContext = lstCurrentPageLeftButton3Excersices.ElementAt(0);
                btn3SpecialPages.Visibility = Visibility.Visible;
                btn3line.Visibility = Visibility.Visible;
            }
            else
            {
                btn3SpecialPages.Visibility = Visibility.Collapsed;
                btn4SpecialPages.Visibility = Visibility.Collapsed;
                btn3line.Visibility = Visibility.Collapsed;
                btn4line.Visibility = Visibility.Collapsed;
            }
            if (lstCurrentPageLeftButton4Excersices.Count > 0)
            {
                btn4SpecialPages.DataContext = lstCurrentPageLeftButton4Excersices.ElementAt(0);
                btn4SpecialPages.Visibility = Visibility.Visible;
                btn4line.Visibility = Visibility.Visible;
            }
            else
            {
                btn4SpecialPages.Visibility = Visibility.Collapsed;
                btn4line.Visibility = Visibility.Collapsed;
            }


            GridSectionTitle.DataContext = null;
            GridSectionTitle.DataContext = currentPageSettings;
        }


    }

如果未选择任何项目,
gvSpecialPagesViewExecution.SelectedIndex
将为-1,这对于
ElementAt
是无效的值

在开关之前添加处理程序以防止该异常:

if(gvSpecialPagesViewExercise.SelectedIndex <= 0)
   return;

if(gvSpecialPagesViewExercise.SelectedIndex)在不回答您的问题时(显然您同时发现了错误),以下是一些提示:

您的代码看起来非常复杂,因为您分别处理这四个列表。如果将它们放在一个数组中,您可以全局处理它们,从而简化代码

List<BookExercises>[] exercises = new List<BookExercises>[4];

private void UpdateLeftButtonContent()
{
    ResetSpecialPagesButtonColors();
    if (currentPageSettings.PageStyle.Contains("Especiales")) {
        for (int i = 0; i < exercises.Length; i++) {
            exercises[i] = new List<BookExercises>();
        }
        foreach (BookExercises x in lstCurrentPageBookExercises) {
            if (x.AssignmentCode == 0 && x.Id >= 0 && x.Id < exercises.Length) {
                exercises[x.Id].Add(x);
            }
        }
        ...
    }
}
List[]练习=新列表[4];
私有void UpdateLeftButtonContent()
{
ResetSpecialPagesButtonColors();
if(currentPageSettings.PageStyle.Contains(“特殊”)){
for(int i=0;i=0&&x.Id

int specialbtnId=0;
私有void GVSpecialPagesViewExecution_SelectionChanged(对象发送方,
选择ChangedEventArgs(e)
{  
//如果您确定此条件始终为真,则可以放弃它。
if(specialbtnId>=0&&specialbtnId=0&&index<1.Count){
LoadSpecialPagesBookExercises(lst[索引]);
}
}
} 

能否显示
按钮单击事件处理程序代码?处理异常并显示错误消息。您可以通过将列表插入数组来简化代码
列表[]练习=新列表[4];
练习[0]=新列表();
@ItiTyagi错误消息trow me如下:索引超出范围。必须为非负且小于集合的大小。调试,调试,调试!设置断点,单步执行代码并检查变量!是的,这正是trow me-1。
int specialbtnId = 0;
private void gvSpecialPagesViewExercise_SelectionChanged(object sender,
    SelectionChangedEventArgs e)
{  
    // If you are sure that this condition is always true, you can drop it.
    if (specialbtnId >= 0 && specialbtnId < exercises.Length) {
        BookExercises lst = exercises[specialbtnId];
        int index = gvSpecialPagesViewExercise.SelectedIndex;
        if (index >= 0 && index < lst.Count) {
            LoadSpecialPagesBookExcersices(lst[index]);
        }
    }
}