zoukankan      html  css  js  c++  java
  • Winform常用方法

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Windows.Forms;
    using System.Reflection;
    using System.Threading;

    namespace EbookToBBs
    {
        public class Tool
        {
            public static Type RtbType = typeof(RichTextBox);

            /// <summary>
            /// 停止一个线程,如果没有停止则方法不返回
            /// </summary>
            /// <param name="thread"></param>
            public static void StopThread(Thread thread)
            {
                if (thread != null && thread.ThreadState != ThreadState.Stopped)
                {
                    thread.Abort();
                    while (true)
                    {                 
                        if (thread.ThreadState == ThreadState.Stopped)
                        {                       
                            return;
                        }                  
                        Thread.Sleep(10);
                    }
                }
            }

            /// <summary>
            /// 为RichTextBox添加内容
            /// </summary>
            /// <param name="rtb"></param>
            /// <param name="text"></param>
            public static void AppendText(RichTextBox rtb, string text)
            {
                //如果不是在UI线程上操作rtb
                if (rtb.InvokeRequired)
                {
                    rtb.Invoke(new Action<string>(delegate(string txt)
                    {
                        rtb.AppendText(txt);
                        rtb.AppendText("\r\n");
                    }), text);
                }
                else
                {
                    rtb.AppendText(text);
                }
            }

            /// <summary>
            /// 使用反射调用RichTextBox的方法
            /// </summary>
            /// <param name="rtb"></param>
            /// <param name="methodName"></param>
            public static void Method(RichTextBox rtb, string methodName)
            {
                MethodInfo method = GetMethod(RtbType, methodName);
                Invoke(rtb, method, null);
            }

            /// <summary>
            /// 使用反射调用RichTextBox的方法
            /// </summary>
            /// <param name="rtb"></param>
            /// <param name="methodName"></param>
            public static void Method(RichTextBox rtb, string methodName, Type[] typeArr, ParameterModifier[] paraModiferArr, params object[] args)
            {
                MethodInfo method = GetMethod(RtbType, methodName, typeArr, paraModiferArr);
                if (method == null)
                {
                    return;
                }
                Invoke(rtb, method, args);
            }

            /// <summary>
            /// 调用某个实例的某个方法
            /// </summary>
            /// <param name="rtb">实例</param>
            /// <param name="method">方法</param>
            /// <param name="args">参数</param>
            public static void Invoke(RichTextBox rtb, MethodInfo method, params object[] args)
            {
                //如果不是在UI线程上操作rtb
                if (rtb.InvokeRequired)
                {
                    rtb.Invoke(new Action<object[]>(delegate(object[] objArr)
                        {
                            method.Invoke(rtb, objArr);
                        }), new object[] { args });
                }
                else
                {
                    method.Invoke(rtb, args);
                }
            }

            #region 获取一个类型的方法
            /// <summary>
            /// 获取一个没有参数的方法
            /// </summary>
            /// <param name="type"></param>
            /// <param name="name"></param>
            /// <returns></returns>
            public static MethodInfo GetMethod(Type type, string name)
            {
                MethodInfo method = type.GetMethod(name, BindingFlags.Public | BindingFlags.IgnoreCase | BindingFlags.Instance);
                return method;
            }

            /// <summary>
            /// 获取一个有参数的方法
            /// </summary>
            /// <param name="type"></param>
            /// <param name="name"></param>
            /// <param name="typeArr"></param>
            /// <param name="paraModiferArr"></param>
            /// <returns></returns>
            public static MethodInfo GetMethod(Type type, string name, Type[] typeArr, ParameterModifier[] paraModiferArr)
            {
                MethodInfo method = type.GetMethod(name, BindingFlags.Public | BindingFlags.IgnoreCase | BindingFlags.Instance, null, typeArr, paraModiferArr);
                return method;
            }
            #endregion
        }
    }
  • 相关阅读:
    html和js的编码格式
    如何通过webStorm快速恢复误删除的工程
    模板使用的一个坑
    一个字符串处理的小算法题
    工信部,映射,映射端口,热备,磁盘,虚拟磁盘,冗余,磁盘阵列技术,廉价冗余磁盘阵列 ,RAID 0,RAID1 ,RAID 3,RAID 5,RAID 6 名词解释
    项目管理,REID,矩阵,终端,镜像,Voip,AVB,串口,串口服务器,数据库,数据仓库,码流,心跳包,名词解释
    TCP协议,UDP协议,Utp,双绞线,DHCP协议,子网掩码,LAN,VLAN,网口,服务器,UI设计,Linux系统,Unix系统,名词解释
    IOS,ISO,OSI,交换机,路由器,MAC地址,网卡,网关,DNS,DNS服务器,名词解释
    中控,I/O端口,继电器,红外接口,编码器,解码器,主机,名词解释
    产品需求的讨论收集,整理描述,反馈实现,实施与验收使用,步骤方法与心得
  • 原文地址:https://www.cnblogs.com/mxw09/p/2036871.html
Copyright © 2011-2022 走看看