通用工业视觉软件设计之C#脚本-后端-初始化更新UI(代码颜色-代码自动补全-函数参数提示)

通用工业视觉软件设计之C#脚本-后端-初始化更新UI

一 窗口加载函数

        public ModuleFrm()
        {
            InitializeComponent();
            this.MaxHeight = SystemParameters.MaximizedPrimaryScreenHeight - 16;
            this.MaxWidth = SystemParameters.MaximizedPrimaryScreenWidth;
            this.Loaded += ModuleFrm_Loaded;
        }
private ModuleObj frm_ModuleObj;
public string InCode = "";
    private void ModuleFrm_Loaded(object sender, RoutedEventArgs e)
    {
        //加载参数
        frm_ModuleObj = (ModuleObj)m_ModuleObjBase;
        //窗体名称
        Title.HeadName = frm_ModuleObj.ModuleParam.ModuleName;
        //模块当前ID
        CurrentModelID = frm_ModuleObj.ModuleParam.ModuleName;

        m_MyEditer.Text = frm_ModuleObj.InCode;
        /// 初始化提示参数
		InitializeMethodDictionary();
        // 初始化控件
        InitScintilla();
        // 初始化提示代码
        InitTxt();
    }
      /// <summary>
      /// 初始化提示参数
      /// </summary>
      private void InitializeMethodDictionary()
      {
          // 添加方法1: CalculateSum
          methodDic.Add("Show", new ScriptMethodInfo
          {
              Name = "Show",
              Description = "void Show(string content)",
              Category = "MessageBox",
              DisplyName = "Show"
          });

      }

初始化显示代码控件

       private void InitScintilla()
       {
           // 字体包裹模式
           m_MyEditer.WrapMode = WrapMode.None;

           //高亮显示
           InitSyntaxColoring(m_MyEditer);

           //自定义关键字代码提示功能
           m_MyEditer.AutoCIgnoreCase = true;//代码提示的时候,不区分大小写
           AutoComplete();

           // 这两种操作会导致乱码
           m_MyEditer.ClearCmdKey(Keys.Control | Keys.S);
           m_MyEditer.ClearCmdKey(Keys.Control | Keys.F);

           m_MyEditer.AutoCCompleted += m_MyEditer_AutoCCompleted;
       }

初始化显示提示文本

        private void InitTxt()
        {
            string str = "\"";//单引号
            string str1 = "\"," + str;// ",

            #region C#基本语法
            //数据声明
            RichtxtboxInput(System.Windows.Media.Brushes.Green, "C#基本语法");

            ////数据声明


            ////数组声明


            ////判断

            ////循环


            ////分割字符


            ////数据声明

            ////打印日志
          

            #endregion

        }

内部支持方法-ScriptMethods

添加引用

在这里插入图片描述

创建文件夹-05_VisionManage

OperDataVar

using ModuleDataVar;
using ModulePublicShare;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using ModuleLog;

namespace VisionCore
{
    public class OperDataVar
    {

        public static object obj = new object();

        /// <summary>
        /// 修改全局变量中的数据
        /// </summary>
        /// <param name="inVariableList"></param>
        /// <param name="data"></param>
        public static void UpdateGlobalValue(ref List<DataVar> inVariableList, DataVar data)
        {
            lock (obj)
            {
                int index = inVariableList.FindIndex(c => c.m_DataName == data.m_DataName);
                if (index > -1)
                {
                    inVariableList[index] = data;
                }
                else
                {
                    inVariableList.Add(data);
                }
            }
        }

        /// <summary>
        /// 根据名称获取全局变量
        /// </summary>
        /// <param name="ValueName">名称</param>
        /// <returns></returns>
        public static object GetGlobalValue(string ValueName)
        {
            lock (obj)
            {
                int index = SysProcessSln.g_VarList.FindIndex(c => c.m_DataName == ValueName);
                if (index > -1)
                {
                    return SysProcessSln.g_VarList[index].m_DataValue;
                }
                Log.Error("未查询到对应的变量名!");
                return null;
            }
        }

        /// <summary>
        /// 根据名称获取全局变量
        /// </summary>
        /// <param name="ValueName">名称</param>
        /// <returns></returns>
        public static DataVar GetGlobalValueBackData(string ValueName)
        {
            lock (obj)
            {
                int index = SysProcessSln.g_VarList.FindIndex(c => c.m_DataName == ValueName);
                if (index > -1)
                {
                    return SysProcessSln.g_VarList[index];
                }
                Log.Error("未查询到对应的变量名!");
                return new DataVar();
            }
        }

    }
}

ScriptMethods

using HalconDotNet;
using ModuleDataVar;
using ModuleLog;
using ModulePublicShare;
using ModuleView;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Windows.Forms;
using System.Xml.Linq;
using VisionCore;


namespace Plugin.CSharpScript
{
    /// <summary>
    /// 脚本基类,可以自己定义方法在内部使用
    /// </summary>
    public class ScriptMethods
    {
        public int ProjectID { get; set; } = 0;//脚本所在项目的id /执行run方法的时候 赋值
        public string ModuleName { get; set; } //脚本所在对应的模块名称


        /// <summary>
        /// 显示一个内容
        /// </summary>
        /// <param name="str"></param>
        public void Show(string str)
        {
            MessageBox.Show(str);
        }

        /// <summary>
        /// 显示一个内容
        /// </summary>
        /// <param name="str"></param>
        public void LogInfo(string str)
        {
            Log.Info(str);
        }

        /// <summary>
        /// 根据格式获取系统时间
        /// </summary>
        /// <param name="format"></param>
        public string GenDateTime(string format)
        {
            return System.DateTime.Now.ToString(format);
        }

        /// <summary>
        /// 图像显示字符
        /// </summary>
        /// <param name="ProjectName">流程名称</param>
        /// <param name="ModuleName">模块名称</param>
        /// <param name="ModuleDescribe">描述文件</param>
        /// <param name="Txt">显示内容</param>
        /// <param name="color">颜色</param>
        public void ShowHwindowText(string ProjectName, string ModuleName, string ModuleDescribe, string Txt, string color)
        {
            //查询流程索引
            int proIndex = SysProcessSln.g_ProjectList.FindIndex(c => c.ProjectInfo.m_ProjectName == ProjectName);
            if (proIndex > -1)
            {
                int index = -1;
                index = SysProcessSln.g_ProjectList[proIndex].m_ModuleObjList.FindIndex(c => c.ModuleParam.ModuleName == ModuleName);
                if (index > -1)
                {
                    ModuleParam par = SysProcessSln.g_ProjectList[proIndex].m_ModuleObjList[index].ModuleParam;
                    //ROI搜索范围的轮廓
                    ModuleROIText 结果 = new ModuleROIText(
                    par.ToString(),
                    par.ToString(),
                    ModuleDescribe,
                    ModuleRoiType.文字显示.ToString(),
                    color,
                    Txt,
                    24);

                    if (SysProcessSln.g_ProjectList[proIndex].m_ModuleObjList[index].m_Image != null)
                    {
                        SysProcessSln.g_ProjectList[proIndex].m_ModuleObjList[index].m_Image.UpdateTxtList(结果);
                    }
                    else
                    {
                        Log.Error("对应的Himage为Null!");
                    }
                }
            }
        }

        /// <summary>
        /// 根据名称获取全局变量的数据
        /// </summary>
        /// <param name="ValueName">变量的名称</param>
        /// <returns></returns>
        public object GetGlobalValue(string ValueName)
        {
            return OperDataVar.GetGlobalValue(ValueName);
        }

        /// <summary>
        /// 根据变量名称设置变量值
        /// </summary>
        /// <param name="ValueName"></param>
        /// <param name="obj"></param>
        public void SetGlobalValue(string ValueName, object obj)
        {
            bool Conver = false;
            int index = SysProcessSln.g_VarList.FindIndex(c => c.m_DataName == ValueName);
            if (index > -1)
            {
                //判断是否是该类型的变量
                switch (SysProcessSln.g_VarList[index].m_DataType)
                {
                    case DataVarType.DataType.Int:
                        Conver = obj is int;
                        break;
                    case DataVarType.DataType.Double:
                        if (double.TryParse(obj.ToString(), out double result))
                        {
                            //输入的是Double类型的
                            Conver = true;
                        }
                        else
                        {
                            //输入的不可以表示成Double类型
                            Conver = false;
                        }
                        //Conver = obj is double;
                        break;
                    case DataVarType.DataType.Float:
                        Conver = obj is float;
                        break;
                    case DataVarType.DataType.Bool:
                        Conver = obj is bool;
                        break;
                    case DataVarType.DataType.String:
                        Conver = obj is String;
                        break;
                    default:
                        break;
                }

                DataVar objStatus;
                if (SysProcessSln.SaveUpValue)
                {
                    //写入初始值
                    objStatus = new DataVar(SysProcessSln.g_VarList[index].m_DataAtrr, SysProcessSln.g_VarList[index].m_DataModuleID,
                      SysProcessSln.g_VarList[index].m_DataName, SysProcessSln.g_VarList[index].m_DataType, SysProcessSln.g_VarList[index].m_DataGroup,
                      SysProcessSln.g_VarList[index].m_Data_Num, obj.ToString(), SysProcessSln.g_VarList[index].m_DataTip, obj);
                }
                else
                {
                    //不写入初始值
                    objStatus = new DataVar(SysProcessSln.g_VarList[index].m_DataAtrr, SysProcessSln.g_VarList[index].m_DataModuleID,
                       SysProcessSln.g_VarList[index].m_DataName, SysProcessSln.g_VarList[index].m_DataType, SysProcessSln.g_VarList[index].m_DataGroup,
                       SysProcessSln.g_VarList[index].m_Data_Num, SysProcessSln.g_VarList[index].m_Data_InitValue, SysProcessSln.g_VarList[index].m_DataTip, obj);
                }

                if (Conver)
                {
                    VisionCore.OperDataVar.UpdateGlobalValue(ref SysProcessSln.g_VarList, objStatus);
                }
                else
                {
                    Log.Error("C#脚本模块,根据变量名称设置变量值,转换格式错误,请查询接收变量类型是否与输入变量类型一致!");
                }
            }
            else
            {
                Log.Error("未查询到对应的变量名!");
            }
        }

        /// <summary>
        /// 获取流程中,模块的值
        /// </summary>
        /// <param name="ProjectName">流程名称</param>
        /// <param name="ModuleName">模块名称</param>
        /// <param name="ModuleVar">值</param>
        public object GetModuleValue(string ProjectName, string ModuleName, string ModuleVar)
        {
            //查询索引
            int proIndex = SysProcessSln.g_ProjectList.FindIndex(c => c.ProjectInfo.m_ProjectName == ProjectName);
            if (proIndex > -1)
            {
                int index = -1;

                index = SysProcessSln.g_ProjectList[proIndex].m_Var_List.FindIndex(c => c.m_DataTip == ModuleName && c.m_DataName == ModuleVar);

                if (index > -1)
                {
                    return SysProcessSln.g_ProjectList[proIndex].m_Var_List[index].m_DataValue;
                }
                else
                {
                    Log.Error("未查询到对应的模块!");
                    return 0;
                }
            }
            else
            {
                Log.Error("未查询到对应的流程!");
                return 0;
            }

        }

        /// <summary>
        /// 设置模块的值
        /// </summary>
        /// <param name="ProjectName"></param>
        /// <param name="ModuleName"></param>
        /// <param name="ModuleVar"></param>
        /// <param name="obj"></param>
        /// <returns></returns>
        public void SetModuleValue(string ProjectName, string ModuleName, string ModuleVar, object obj)
        {
            bool Conver = false;

            //查询索引
            int proIndex = SysProcessSln.g_ProjectList.FindIndex(c => c.ProjectInfo.m_ProjectName == ProjectName);
            if (proIndex > -1)
            {
                int index = -1;

                index = SysProcessSln.g_ProjectList[proIndex].m_Var_List.FindIndex(c => c.m_DataTip == ModuleName && c.m_DataName == ModuleVar);

                if (index > -1)
                {
                    //判断是否是该类型的变量
                    switch (SysProcessSln.g_ProjectList[proIndex].m_Var_List[index].m_DataType)
                    {
                        case DataVarType.DataType.Int:
                            Conver = obj is int;
                            break;
                        case DataVarType.DataType.Double:
                            if (double.TryParse(obj.ToString(), out double result))
                            {
                                //输入的是Double类型的
                                Conver = true;
                            }
                            else
                            {
                                //输入的不可以表示成Double类型
                                Conver = false;
                            }
                            //Conver = obj is double;
                            break;
                        case DataVarType.DataType.Float:
                            Conver = obj is float;
                            break;
                        case DataVarType.DataType.Bool:
                            Conver = obj is bool;
                            break;
                        case DataVarType.DataType.String:
                            Conver = obj is String;
                            break;
                        default:
                            break;
                    }

                    DataVar objStatus = new DataVar(
                        SysProcessSln.g_ProjectList[proIndex].m_Var_List[index].m_DataAtrr,
                        SysProcessSln.g_ProjectList[proIndex].m_Var_List[index].m_DataModuleID,
                        SysProcessSln.g_ProjectList[proIndex].m_Var_List[index].m_DataName,
                        SysProcessSln.g_ProjectList[proIndex].m_Var_List[index].m_DataType,
                        SysProcessSln.g_ProjectList[proIndex].m_Var_List[index].m_DataGroup,
                        SysProcessSln.g_ProjectList[proIndex].m_Var_List[index].m_Data_Num,
                        SysProcessSln.g_ProjectList[proIndex].m_Var_List[index].m_Data_InitValue,
                        SysProcessSln.g_ProjectList[proIndex].m_Var_List[index].m_DataTip,
                        obj);

                    if (Conver)
                    {
                        SysProcessSln.g_ProjectList[proIndex].m_Var_List[index] = objStatus;
                    }
                    else
                    {
                        Log.Error("C#脚本模块,设置模块的值,转换格式错误,请查询接收变量类型是否与输入变量类型一致!");
                    }
                }
                else
                {
                    Log.Error("未查询到对应的模块!");
                }
            }
            else
            {
                Log.Error("未查询到对应的流程!");
            }
        }

        /// <summary>
        /// 查询Json数据
        /// </summary>
        /// <param name="nam"></param>
        /// <param name="selectVale"></param>
        /// <returns></returns>
        //public string jsonread(string nam, string selectVale)
        //{

        //    string JsonData = "{\r\n\"command\":\"T1_1\",\r\n\"row_count\":2,\r\n\"col_count\":3,\r\n\"battery_color\":0,\r\n\"battery_shape\":0,\r\n\"battery_len1\":110.0,\r\n\"battery_len2\":0.0,\r\n\"battery_wid1\":80.0,\r\n\"battery_wid2\":0.0,\r\n\"battery_body_len\":0.0\r\n}";
        //    JavaScriptSerializer serializer = new JavaScriptSerializer();
        //    Dictionary<string, object> json = (Dictionary<string, object>)serializer.DeserializeObject(JsonData);
        //    string firstKey = json.ElementAt(0).Key;
        //    string secondKey = json.ElementAt(1).Key;

        //    return json[selectVale].ToString();

        //}

        /// <summary>
        /// 查询Json数据
        /// </summary>
        /// <param name="InputStr">输入字符</param>
        /// <param name="selectVale">键值</param>
        /// <returns></returns>
        public string JsonRead(string InputStr, string selectVale)
        {
            //将json转换为JObject
            JObject jObj = JObject.Parse(InputStr);
            JToken ageToken = jObj[selectVale];

            string str = ageToken.ToString();

            return str;
        }

        /// <summary>
        /// 查询Json数据
        /// </summary>
        /// <param name="InputStr">输入字符</param>
        /// <param name="selectVale">键值</param>
        /// <returns></returns>
        public string JsonRead(string InputStr, string selectVale, string subValue)
        {
            //将json转换为JObject
            JObject jObj = JObject.Parse(InputStr);
            JToken ageToken = jObj[selectVale];
            string str = ageToken[subValue].ToString();
            return str;
        }

        public string JsonWriteArray(Object Input)
        {
            // string[] obj = (string[])Input;

            List<string> obj1 = (List<string>)Input;

            JObject staff = new JObject()
            {
              new JProperty("command", "T1_1"),
              new JProperty("run_result", 1),
            };
            List<JObject> InoutPbj = new List<JObject>();

            for (int i = 0; i < obj1.Count; i++)
            {
                InoutPbj.Add(new JObject
                {
                    new JProperty("battery_index", i),
                    new JProperty("result",Convert.ToInt32( obj1[i]))
                    //new JProperty("result",Convert.ToInt32( obj1[obj1.Count-i-1]))
                });
            }

            staff.Add(new JProperty("results", InoutPbj.ToArray()));

            string json = JsonConvert.SerializeObject(staff);
            Console.WriteLine(json.ToString());
            return json;
        }

        public bool Intersection(string ProjectName1, string ModelName1, string ProjectName2, string ModelName2, int Index)
        {
            try
            {
                HRegion hRegion = (HRegion)GetModuleValue(ProjectName1, ModelName1, "区域");
                HRegion hRegion1 = (HRegion)GetModuleValue(ProjectName2, ModelName2, "区域");

                //                int Index = (int)GetModuleValue("测试", "循环开始0", "Int");

                hRegion = hRegion.SelectObj(Index + 2);
                //hRegion1 = hRegion1.SelectObj(Index+2);

                HRegion outRegion = hRegion.Intersection(hRegion1);

                int AreaNum = outRegion.AreaCenter(out double row, out double col);

                return AreaNum > 0;
            }
            catch (Exception)
            {
                return false;
            }

        }

    }

}

高亮规则

          //转换color
        public static System.Drawing.Color IntToColor(int rgb)
        {
            return System.Drawing.Color.FromArgb(255, (byte)(rgb >> 16), (byte)(rgb >> 8), (byte)rgb);
        }

        /// <summary>
        /// 设置语法高亮规则
        /// </summary>
        /// <param name="scintilla"></param>
        private void InitSyntaxColoring(Scintilla scintilla)
        {
            // 设置默认格式
            scintilla.StyleResetDefault();
            scintilla.Styles[ScintillaNET.Style.Default].Font = "Consolas";
            scintilla.Styles[ScintillaNET.Style.Default].Size = 10;

            //前景色
            scintilla.Styles[ScintillaNET.Style.Default].ForeColor = System.Drawing.Color.Black;
            //背景色
            //scintilla.Styles[ScintillaNET.Style.Default].BackColor = System.Drawing.Color.Black;

            scintilla.StyleClearAll();

            scintilla.ScrollWidth = 100;//设置水平滚动条为100 这样水平就不会默认显示滚动条

            //普通代码的颜色
            scintilla.Styles[ScintillaNET.Style.Cpp.Comment].ForeColor = ColorTranslator.FromHtml("#008000");
            scintilla.Styles[ScintillaNET.Style.Cpp.Number].ForeColor = ColorTranslator.FromHtml("#FF6532");
            scintilla.Styles[ScintillaNET.Style.Cpp.String].ForeColor = ColorTranslator.FromHtml("#A31515");
            scintilla.Styles[ScintillaNET.Style.Cpp.Preprocessor].ForeColor = IntToColor(0x8AAFEE);

            //操作符
            scintilla.Styles[ScintillaNET.Style.Cpp.Operator].ForeColor = ColorTranslator.FromHtml("#A31515");


            scintilla.Lexer = Lexer.Cpp;

            //行号字体颜色
            scintilla.Styles[ScintillaNET.Style.LineNumber].ForeColor = ColorTranslator.FromHtml("#8DA3C1");
            //行号相关设置
            var nums = scintilla.Margins[1];
            nums.Width = 30;
            nums.Type = MarginType.Number;
            nums.Sensitive = true;
            nums.Mask = 0;
        }

代码提示功能

//自动提示的关键字
private string m_AutoStr;
        /// <summary>
        /// 代码提示功能
        /// </summary>
        public void AutoComplete()
        {
            //绑定输入事件
            m_MyEditer.CharAdded += Scintilla_CharAdded;
            string s = GetMethodsString();
            string str = " " + s; // ScriptTemplate.VBString() +
            //获取

            //分割字符串成list
            List<string> autoStrList = str.Split(new char[] { ' ', '\n', '\r' }, StringSplitOptions.RemoveEmptyEntries).ToList();

            //对list排序重新转换为string
            m_AutoStr = string.Join(" ", autoStrList.OrderBy(x => x.ToUpper()));
        }
        //输入结束事件
        private void Scintilla_CharAdded(object sender, CharAddedEventArgs e)
        {
            // Find the word start
            var currentPos = m_MyEditer.CurrentPosition;
            var wordStartPos = m_MyEditer.WordStartPosition(currentPos, true);

            // Display the autocompletion list
            var lenEntered = currentPos - wordStartPos;
            if (lenEntered > 0)
            {
                if (!m_MyEditer.AutoCActive)
                {
                    //此处必须是按照字母排序才能显示出来
                    m_MyEditer.AutoCShow(lenEntered, m_AutoStr);
                }
            }

            //  ShowTipByWord();
        }

获取当前程序集指定方法:GetMethodsString

        //获取当前程序集指定方法
        public string GetMethodsString()
        {
            List<string> strList = new List<string>();

            List<Type> typeList = new List<Type>();
            typeList.Add(typeof(Object));
            typeList.Add(typeof(Math));
            typeList.Add(typeof(string));
            typeList.Add(typeof(System.Collections.Generic.List<double>));
            typeList.Add(typeof(Enumerable));
            typeList.Add(typeof(System.Windows.MessageBox));

            //
            typeList.Add(typeof(ScriptMethods));
            foreach (Type item in typeList)
            {
                if (item.IsEnum == true)
                {
                    string[] rolearry = Enum.GetNames(item);
                    strList.AddRange(rolearry);
                    strList.Add(item.Name);
                }
                else
                {
                    //添加type的方法
                    MethodInfo[] methods = item.GetMethods();
                    foreach (MethodInfo m in methods)
                    {
                        strList.Add(m.ToString().Split(' ')[1].Split('(')[0].Replace("set_", "").Replace("get_", "").Split('[')[0]);
                    }
                    strList.Add(item.Name);
                }
            }

            return string.Join(" ", strList.Distinct().ToList().OrderBy(x => x.ToUpper())); ;
        }
//脚本方法字典,
private Dictionary<string, ScriptMethodInfo> methodDic = new Dictionary<string, ScriptMethodInfo>();

ScriptTemplate

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Plugin.CSharpScript
{
    //脚本内的方法信息
    class ScriptMethodInfo
    {
        public string Name;
        public string Description;
        public string Category;
        public string DisplyName;// 格式"string key, int value, bool addFlag = false"
    }

    /// <summary>
    /// 代码模板
    /// </summary>
    public class ScriptTemplate
    {
        //原始代码 不要做任何修改,包括一个空格和空白行!!!!   
        public static string s_RawScript =
            @"
using System;
using System.Linq;
using System.Threading.Tasks;
using System.Windows;
using HalconDotNet;
using Plugin.CSharpScript;
using System.Windows.Forms;

public class MyScript
{
    public void Process()
    {


      

        MessageBox.Show(""Test Run!"");
        ScriptMethods methods = new ScriptMethods();
        methods.LogInfo(""运行成功!"");
        
    }
}


                ";



        /// <summary>
        /// 拼装完整的脚本
        /// </summary>
        /// <param name="projectID"></param>
        /// <param name="code"></param>
        /// <returns></returns>
        public static string GetScriptCode(string code)
        {

            if (code.Length > 0) return code;


            return s_RawScript;
        }


        /// <summary>
        /// 关键字
        /// </summary>
        /// 
        public static string CSharpString()
        {
            string str1 = " ";
            string str2 = " ";

            return str1 + str2;
        }


    }
}



       //自动补全时出现
       private void m_MyEditer_AutoCCompleted(object sender, AutoCSelectionEventArgs e)
       {
           string tip = ShowTipByWord();
           //tip提示
           if (!string.IsNullOrWhiteSpace(tip))
           {
               m_MyEditer.CallTipShow(m_MyEditer.CurrentPosition, tip);
           }
       }
       /// <summary>
       /// 根据word 在tip窗口显示提示
       /// </summary>
       private string ShowTipByWord()
       {
           // Find the word start
           var currentPos = m_MyEditer.CurrentPosition;
           var wordStartPos = m_MyEditer.WordStartPosition(currentPos, true);
           var wordEndPos = m_MyEditer.WordEndPosition(currentPos, true);
           string word = m_MyEditer.GetTextRange(wordStartPos, wordEndPos - wordStartPos);
           string tip = "";
           if (!string.IsNullOrWhiteSpace(word))
           {
               if (methodDic.ContainsKey(word))
               {
                   tip = methodDic[word].Description;
                   tb_Compile.Text = tip;
               }
           }

           return tip;//返回提示信息
       }

初始化文本内容

       private void InitTxt()
       {
           string str = "\"";//单引号
           string str1 = "\"," + str;// ",

           #region C#基本语法
           //数据声明
           RichtxtboxInput(System.Windows.Media.Brushes.Green, "C#基本语法");

           ////数据声明


           ////数组声明


           ////判断

           ////循环


           ////分割字符


           ////数据声明

           ////打印日志


           #endregion

       }

       private void RichtxtboxInput(System.Windows.Media.Brush brush, string txt)
       {
           Run item = new Run(txt);
           Paragraph paragraph = new Paragraph();
           paragraph.Inlines.Add(item);
           paragraph.LineHeight = 1.0;
           paragraph.Foreground = brush;
           this.Txt_Tip.Document.Blocks.Add(paragraph);

       }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值