/// <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(); }
/// <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; } }
/// <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); //如果为常数,得到常数的值 } }
//修改学生信息 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; }
/// <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后面不会连接常数 } }