简体   繁体   中英

Simple C# WPF form generating a slew of seemingly nonsensical error messages

The code below contains a "whole bunch" of error messages, and I can't for the life of me figure out why. I recently had to "downgrade" from VS2010 to VS2008, and have had nothing but misery since. The first few error messages are shown as comments next to where they are occurring.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.IO;

namespace UniClient_NextGen
{
    /// <summary>
    /// Interaction logic for Window1.xaml
    /// </summary>
    public partial class Window1 : Window
    {
        public Window1()
        {
            InitializeComponent();
        }

        private void buttonPopMenuItemsLU_Click(object sender, RoutedEventArgs e) 
        { // err msg #1 = "} expected"
            public static int TOPLEVEL_ID = 0;
            public static int PARENT_ID = 1;
            public static int SELF_ID = 2;
            public static int MENU_CAPTION = 3;
            public static int MENU_NAME = 4;

            string fileName = @"C:\_UniClientNextGen\MenuItemsWithIDs.txt";
            using (StreamReader reader = File.OpenText(fileName)) // err msg #2 = "Invalid token 'using' in class, struct, or interface member declaration" + err msg #3 = "; expected" (at end of this line)
            {
                string _line = null;
                string[] strElements;
                do
                {
                    _line = reader.ReadLine();
                    strElements = _line.Split(",");
                    // strElements should now have five elements
                    int iTopLevelID = Convert.ToInt32(strElements[TOPLEVEL_ID]);
                    int iParentID = Convert.ToInt32(strElements[PARENT_ID]);
                    int iOwnID = Convert.ToInt32(strElements[SELF_ID]);
                    string sMenuCaption = strElements[MENU_CAPTION];
                    string sMenuName = strElements[MENU_NAME];
                    //performSQL("INSERT INTO MENU_ITEMS_LOOKUP (TopLevelMenuID, ParentMenuID, MenuItemName, MenuItemCaption) VALUES (iTopLevelID, iParentID, iOwnID, sMenuCaption, sMenuName)");
                } while (_line != null);
            }
        } // err msg #4 = "Type or namespace definition, or end-of-file expected" 

        private void buttonPopSorterTypesLU_Click(object sender, RoutedEventArgs e)
        {
            //
        }

        private void buttonPopTabsheetsLU_Click(object sender, RoutedEventArgs e)
        {
            //
        }

        private void buttonPopMenuItem_SorterTypeM2M_Click(object sender, RoutedEventArgs e)
        {
            //
        }

        private void buttonPopSorterType_TabsheetM2M_Click(object sender, RoutedEventArgs e)
        {
            //
        }
    }
}

为什么在方法内部有public static声明?

I think you're XAML definition or XAML namespace is not in sync with your class. Did you recently rename a class or a namespace?

Here is the corrected code (I have moved static member declaration in right place and corrected the _line.Splt() parameter):

//...
public static int TOPLEVEL_ID = 0;
public static int PARENT_ID = 1;
public static int SELF_ID = 2;
public static int MENU_CAPTION = 3;
public static int MENU_NAME = 4;

void buttonPopMenuItemsLU_Click(object sender, RoutedEventArgs e) {
    string fileName = @"C:\_UniClientNextGen\MenuItemsWithIDs.txt";
    using(StreamReader reader = File.OpenText(fileName)) {
        string _line = null;
        string[] strElements;
        do {
            _line = reader.ReadLine();
            strElements = _line.Split(',');
            int iTopLevelID = Convert.ToInt32(strElements[TOPLEVEL_ID]);
            int iParentID = Convert.ToInt32(strElements[PARENT_ID]);
            int iOwnID = Convert.ToInt32(strElements[SELF_ID]);
            string sMenuCaption = strElements[MENU_CAPTION];
            string sMenuName = strElements[MENU_NAME];
        } while(_line != null);
    }
}
//...

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM