/// <summary> /// 解析规则窗体的构造函数,带参数 /// </summary> /// <param name="rulename">名称</param> public JcjxRuleForm(string rulename) { InitializeComponent(); //获得数据库中rulename的对象,包括名称,规则说明,规则详情 RuleInfoOriginal myri = GetRuleInfo(rulename); //名称赋值 tb_guizemingcheng.Text = myri._guizemingcheng; //规则说明赋值 tb_shuoming.Text = myri._guizeshuoming; //文本特征集合转化成jigexiguize类,构造uc,添加到panel中 JiexiGuize myjiexiguize = JsonConvert.DeserializeObject <JiexiGuize>(myri._wenbentezheng); for (int i = myjiexiguize.ruleinfo.Count - 1; i >= 0; i--) { UCRuleInfo myuc = new UCRuleInfo(myjiexiguize.ruleinfo[i]); myuc.Dock = DockStyle.Top; panel_wenbentezheng.Controls.Add(myuc); panel_wenbentezheng.Controls.SetChildIndex(myuc, 0); } }
/// <summary> /// 点击保存按钮时触发的事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btn_baocun_Click(object sender, EventArgs e) { //获得名称 string guizemingcheng = tb_guizemingcheng.Text; //获得规则说明 string guizeshuoming = tb_shuoming.Text; //获得规则详情集合,循环获得panel_wenbentezheng中所有的control,转换成ucruleinfo,获得信息 JiexiGuize jiexiguize = new JiexiGuize(); foreach (UserControl uc in panel_wenbentezheng.Controls) { var myuc = uc as UCRuleInfo; RuleDetail ri = new RuleDetail(); ri._shunshu = myuc.tb_shunshu.Text.Trim().Equals(string.Empty)?0: Convert.ToInt32(myuc.tb_shunshu.Text); ri._daoshu = myuc.tb_daoshu.Text.Trim().Equals(string.Empty) ? 0 : Convert.ToInt32(myuc.tb_daoshu.Text); //获得对象选择,myuc.flp_duixiangxuanze中checked=true的text foreach (Control item in myuc.flp_duixiangxuanze.Controls) { if (item is CheckBox && (item as CheckBox).Checked) { ri.duixiangxuanze.Add(item.Text); } } //获得文本特征 ri.wenbentezheng = myuc.tb_wenbentezheng.Text; //获得文本特征结果 ri._zidingyivalue = myuc.tb_zidingyijieguo.Text; foreach (Control item in myuc.flp_juzhi.Controls) { if (item is CheckBox && (item as CheckBox).Checked) { ri.fuzhi.Add(item.Text); } } //获得赋值类型 ri.fuzhileixing = myuc.cbb_fuzhileixing.Text; //获得赋值覆盖范围 foreach (Control mycontrol in myuc.flp_fugaifanwei.Controls) { if ((mycontrol as CheckBox).Checked) { ri.fuzhifanwei.Add(mycontrol.Text); } } //获得横.列名称 ri._liemingcheng = myuc.rb_liemingcheng.Checked; jiexiguize.ruleinfo.Add(ri); } //将解析规则转为json格式 string json = JsonConvert.SerializeObject(jiexiguize, Formatting.None); //在保存之前先删除 DeleteRule(guizemingcheng); //保存规则 bool b = SaveRule(guizemingcheng, guizeshuoming, json); if (b) { this.DialogResult = DialogResult.OK; } else { MessageBox.Show($"规则 {guizemingcheng} 保存失败!"); } }