Exemplo n.º 1
0
        /// <summary>
        /// ��List<int> �Զ�����ʾ,������ͨ������ѡ��,��Ҫ��OnEnable���ʼ��size
        /// </summary>
        /// <param name="size"></param>
        /// <param name="IDlist"></param>
        /// <param name="caption"></param>
        /// <param name="child"></param>
        /// <param name="displayOptions"></param>
        /// <param name="optionValues"></param>
        public static void DynamicArrayView(ref int size, ref List <int> IDlist, string caption, string child, string[] displayOptions, int [] optionValues, int maxSize = 20)
        {
            size = EditorGUILayout.IntSlider(caption, size, 0, maxSize);
            EditorGUILayout.BeginHorizontal(GUILayout.MaxWidth(Screen.width - 16));
            EditorGUILayout.Space();
            EditorGUILayout.BeginVertical();
            if (IDlist == null)
            {
                IDlist = new List <int>();
            }
            if (size == 0)
            {
                IDlist.Clear();
            }
            int dif = IDlist.Count - size;

            if (dif > 0)
            {
                IDlist.RemoveRange(size, dif);
            }
            if (dif < 0)
            {
                IDlist.AddRange(new int[-dif]);
            }
            for (int i = 0; i < size; i++)
            {
                IDlist[i] = EditorGUILayout.IntPopup(child, IDlist[i], displayOptions, optionValues);
            }
            EditorGUILayout.EndVertical();
            EditorGUILayout.EndHorizontal();
        }
Exemplo n.º 2
0
        /// <summary>
        /// 此方法修改result对应的所在表的value值,为change
        /// </summary>
        /// <param name="result">需要重新赋值的对象</param>
        /// <param name="change">所赋的值</param>
        public void retSetValue(string result, string change)
        {
            string a = getValue(result);

            switch (ARG)
            {
            case "VARG":
                int     indexID = IDlist.IndexOf(IN_1);
                IDtable BStmp   = (IDtable)IDtablelist[indexID];
                BStmp.Value = change;
                break;

            case "TARG":
                int         indexTempID = TempIDlist.IndexOf(IN_1);
                TempIDtable LStmp       = (TempIDtable)TempIDtablelist[indexTempID];
                LStmp.Value = change;
                break;

            case "SARG":
                if (!Regex.IsMatch(IN_2, pattern))     //如果数组下标为常数
                {
                    int     indexBS1 = IDlist.IndexOf(IN_2);
                    IDtable BStmp1   = (IDtable)IDtablelist[indexBS1];
                    IN_2 = BStmp1.Value;
                }
                int     indexSZ = SZlist.IndexOf(IN_1);
                SZtable SZtmp   = (SZtable)SZtablelist[indexSZ];
                SZtmp.element[Convert.ToInt32(IN_2)] = change;
                break;

            default:
                break;
            }
        }
Exemplo n.º 3
0
        /// <summary>
        /// 此方法返回result对应的所在表的value值
        /// </summary>
        /// <param name="sth">需要返回值的对象</param>
        /// <returns></returns>
        public string getValue(string result)
        {
            IN_1 = find_Table_Kind(result);
            switch (ARG)
            {
            case "VARG":     //标识符
                int     indexID = IDlist.IndexOf(IN_1);
                IDtable BStmp   = (IDtable)IDtablelist[indexID];
                return(BStmp.Value);

            case "TARG":     //临时变量
                int         indexTempID = TempIDlist.IndexOf(IN_1);
                TempIDtable LStmp       = (TempIDtable)TempIDtablelist[indexTempID];
                return(LStmp.Value);

            case "SARG":                               //数组

                try                                    //如果数组出界,返回一个空值null
                {
                    if (!Regex.IsMatch(IN_2, pattern)) //如果数组下标为常数
                    {
                        int     indexBS1 = IDlist.IndexOf(IN_2);
                        IDtable BStmp1   = (IDtable)IDtablelist[indexBS1];
                        IN_2 = BStmp1.Value;     //得到数组下标的值
                    }

                    int     indexSZ = SZlist.IndexOf(IN_1);
                    SZtable SZtmp   = (SZtable)SZtablelist[indexSZ];
                    if (Convert.ToInt32(IN_2) > Convert.ToInt32(SZtmp.Length) - 1)
                    {
                        return("OutSide");    //数组越界
                    }
                    return(Convert.ToString(SZtmp.element[Convert.ToInt32(IN_2)]));
                }
                catch (ArgumentNullException)
                {
                    return(null);    //如果返回的为空值
                }

            default:
                return(ARG);    //如果为常数,得到常数的值
            }
        }
Exemplo n.º 4
0
        //修改学生信息
        private void xgxs_Click(object sender, RoutedEventArgs e)
        {
            selectStu = smDgStudentLsit.SelectedItem as StudentExt;
            //检测当前选择的学员,查看详细信息的界面还未关闭
            if (IDlist.Contains(selectStu.Sid))
            {
                MessageBox.Show("请关闭正在查看的学员信息界面", "提示");
                return;
            }
            if (selectStu == null)
            {
                MessageBox.Show("请选择要修改的学生!", "提示");
                return;
            }
            StudentExt     objStu         = sm.GetStudentById(selectStu.Sid);
            UpdateStuInfor updateStuInfor = new UpdateStuInfor(objStu);

            updateStuInfor.ShowDialog();
            //刷新DG中这个学员的信息
            students = sm.GetStudents(Convert.ToInt32(smclassCmb.SelectedValue));
            smDgStudentLsit.ItemsSource = students;
        }
Exemplo n.º 5
0
        /// <summary>
        /// 此方法返回result在对应的符号表中的类型
        /// </summary>
        /// <param name="result">需要返回类型的对象</param>
        /// <returns></returns>
        public string getType(string result)
        {
            IN_1 = find_Table_Kind(result);
            switch (ARG)
            {
            case "VARG":     //标识符
                int     indexID = IDlist.IndexOf(IN_1);
                IDtable BStmp   = (IDtable)IDtablelist[indexID];
                return(BStmp.Type);

            case "TARG":     //临时变量
                int         indexTempID = TempIDlist.IndexOf(IN_1);
                TempIDtable LStmp       = (TempIDtable)TempIDtablelist[indexTempID];
                return(LStmp.Type);

            case "SARG":     //数组
                int     indexSZ = SZlist.IndexOf(IN_1);
                SZtable SZtmp   = (SZtable)SZtablelist[indexSZ];
                return(SZtmp.Type);

            default:
                return("real");    //理论上是不会运行到这里的,因为只在read的方法中才会使用,而read后面不会连接常数
            }
        }