如何解决“索引超出数组范围”?

时间:2019-08-16 09:04:47

标签: c#

我创建了 WPF application 以将ComboBoxDatagrid Excel data 一起使用,但是当我更改时ComboBox选择中,我将收到以下错误消息-

  

索引超出数组范围。

下面是引发错误的代码。

    private void MyComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        List<string> MyAlbumCategory = new List<string>();
        MyAlbumCategory.Add("Album-2019-01");
        MyAlbumCategory.Add("Album-2019-02");
        MyAlbumCategory.Add("Album-2019-03");
        MyAlbumCategory.Add("Album-2019-04");
        MyAlbumCategory.Add("Album-2019-05");
        MyAlbumCategory.Add("Album-2019-06");
        MyAlbumCategory.Add("Album-2019-07");
        MyAlbumCategory.Add("Album-2019-08");
        MyAlbumCategory.Add("Album-2019-09");
        MyAlbumCategory.Add("Album-2019-10");
        MyAlbumCategory.Add("Album-2019-11");
        MyAlbumCategory.Add("Album-2019-12");

        MyComboBox.ItemsSource = MyAlbumCategory;
        MyComboBoxSelectionChanged = MyComboBox.SelectedItem as string;
        this.Title = MyComboBox.SelectedItem as string;
        MyOleDbConnection = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=.\\SingerAlbum.xlsx; Extended Properties=\"Excel 12.0 Xml;HDR=YES; \"");

        try
        {
            MyOleDbConnection.Open();
            MyOleDbString = "Select * from [Sheet1$] where Album_Name = '" + MyComboBoxSelectionChanged + "'";
            MyOleDbCommand = new OleDbCommand(MyOleDbString, MyOleDbConnection);
            MyOleDbDataTable = new DataTable();
            MyOleDbDataAdapter = new OleDbDataAdapter(MyOleDbCommand);
            MyOleDbDataAdapter.FillSchema(MyOleDbDataTable, SchemaType.Source);
            MyOleDbDataAdapter.Fill(MyOleDbDataTable);
            MyDataGrid1.ItemsSource = MyOleDbDataTable.DefaultView;
            MyOleDbConnection.Close();
        }
        catch (Exception ex)
        {
            System.Windows.MessageBox.Show(ex.Message);
        }
    }

    private void MyDataGrid1_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        MyDataGrid1_SelectedItem = (e.AddedItems[0] as DataRowView).Row["MV_Name"].ToString();
        //MyDataGrid1_SelectedItem = (MyDataGrid1.SelectedItem as DataRowView).Row["MV_Name"].ToString();
    }

感谢帮助我解决问题。

0 个答案:

没有答案