zoukankan      html  css  js  c++  java
  • Winform常用操作

    >> c#操作cmd命令

    using System.Diagnostics;
    private string RunCmd(string command)
    {
                 //实例一个Process类,启动一个独立进程
                  Process p = new Process();
      
                  //Process类有一个StartInfo属性,这个是ProcessStartInfo类,包括了一些属性和方法,下面我们用到了他的几个属性:
      
                  p.StartInfo.FileName = "cmd.exe";           //设定程序名
                  p.StartInfo.Arguments = "/c " + command;    //设定程式执行参数
                 p.StartInfo.UseShellExecute = false;        //关闭Shell的使用
                 p.StartInfo.RedirectStandardInput = true;   //重定向标准输入
                 p.StartInfo.RedirectStandardOutput = true;  //重定向标准输出
                 p.StartInfo.RedirectStandardError = true;   //重定向错误输出
                 p.StartInfo.CreateNoWindow = true;          //设置不显示窗口
     
                 p.Start();   //启动
                 
                 //p.StandardInput.WriteLine(command);       //也可以用这种方式输入要执行的命令
                 //p.StandardInput.WriteLine("exit");        //不过要记得加上Exit要不然下一行程式执行的时候会当机
                 
                 return p.StandardOutput.ReadToEnd();        //从输出流取得命令执行结果
     
             }
    
    
    //例如实现电脑的关机
    using System.Diagnostics;
     ProcessStartInfo ps = new ProcessStartInfo();
                ps.FileName = "shutdown.exe";
                 ps.Arguments = "-s -t 1";//关机
              //  ps.Arguments = "-r -t 1";//重启
                Process.Start(ps);
    View Code

    >> winForm启动外部.exe文件并传值

    启动EXE
    string arg1 = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
    string arg2 = "bbbbbbbbbbbbbbbbbbbbbbbbbbbbb";
    
    System.Diagnostics.Process p = new System.Diagnostics.Process();
    p.StartInfo.WorkingDirectory = Application.StartupPath; //要启动程序路径
    
    p.StartInfo.FileName = "EXE_NAME";//需要启动的程序名 
    p.StartInfo.Arguments = arg1+" "+arg2;//传递的参数 
    p.Start();//启动 
    或者
    Process eg = new Process();
    ProcessStartInfo startInfo = new ProcessStartInfo(exePath,strArgs);//exePath为要启动程序路径,strArgs为要传递的参数
    eg.StartInfo = startInfo;
    eg.StartInfo.UseShellExecute = false;
    eg.Start();
    
    接收参数
    
    private void Form1_Load(object sender, EventArgs e)
    {
    String[] CmdArgs= System.Environment.GetCommandLineArgs();
    if (CmdArgs.Length > 1)
    {
    //参数0是它本身的路径
    String arg0 = CmdArgs[0].ToString();
    String arg1 = CmdArgs[1].ToString();
    String arg2 = CmdArgs[2].ToString();
    
    MessageBox.Show(arg0);//显示这个程序本身路径
    MessageBox.Show(arg1);//显示得到的第一个参数
    MessageBox.Show(arg2);//显示得到的第二个参数
    }
    }
    View Code

     >> winForm使用gif图片

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Diagnostics;
    
    namespace DysncPicTest
    {
        public partial class Form1 : Form
        {
            private Image m_imgImage = null;
            private EventHandler m_evthdlAnimator = null;
            public Form1()
            {
                InitializeComponent();
                this.SetStyle(ControlStyles.UserPaint, true);
                this.SetStyle(ControlStyles.DoubleBuffer, true);
                this.SetStyle(ControlStyles.AllPaintingInWmPaint, true);
    
                m_evthdlAnimator = new EventHandler(OnImageAnimate);
                Debug.Assert(m_evthdlAnimator != null);
             // http://www.cnblogs.com/sosoft/
            }
    
            protected override void OnPaint(PaintEventArgs e)
            {
                base.OnPaint(e);
                if (m_imgImage != null)
                {
                    UpdateImage();
                    e.Graphics.DrawImage(m_imgImage, new Rectangle(100, 100, m_imgImage.Width, m_imgImage.Height));
                }
            }
    
            protected override void OnLoad(EventArgs e)
            {
                base.OnLoad(e);
                m_imgImage = Image.FromFile("1.gif"); // 加载测试用的Gif图片
                BeginAnimate();
            }
    
            private void Form1_FormClosing(object sender, FormClosingEventArgs e)
            {
                 if (m_imgImage != null)
                {
                    StopAnimate();
                    m_imgImage = null;
                }
            }
    
            private void BeginAnimate()
            {
               if (m_imgImage == null)
                    return;
             
               if (ImageAnimator.CanAnimate(m_imgImage))
               {
                    ImageAnimator.Animate(m_imgImage,m_evthdlAnimator);
               }
            }
     
            private void StopAnimate()
            {
                if (m_imgImage == null)
                    return;
     
                if (ImageAnimator.CanAnimate(m_imgImage))
                {
                    ImageAnimator.StopAnimate(m_imgImage,m_evthdlAnimator);
                }
            }
     
            private void UpdateImage()
            {
                if (m_imgImage == null)
                    return;
     
                if (ImageAnimator.CanAnimate(m_imgImage))
                {
                    ImageAnimator.UpdateFrames(m_imgImage);
                }
            }
    
            private void OnImageAnimate(Object sender,EventArgs e)
            {
                this.Invalidate(); 
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
    
            }
        }
    }
    View Code

     >> winForm一种重绘tabControl的方法(带有删除功能)

        #region 重绘tabControl
            const int CLOSE_SIZE = 15;
          
            /// <summary>
            /// 重绘TabControl方法
            /// </summary>
            /// <param name="tc">TabControl控件</param>
           public static  void tabControl_reDraw(TabControl tc)
            {
                //清空控件   
                //this.MainTabControl.TabPages.Clear();   
                //绘制的方式OwnerDrawFixed表示由窗体绘制大小也一样   
                tc.DrawMode = TabDrawMode.OwnerDrawFixed;
                tc.Font = new Font("宋体", 12);
             
                tc.Padding = new System.Drawing.Point(15, 5);
    
                tc.DrawItem += new DrawItemEventHandler(tabControl_DrawItem);
                tc.MouseDown += new MouseEventHandler(tabControl_MouseDown);
              
                tc.TabPages.Clear();//清空所有的page
            }
           static void tabControl_DrawItem(object sender, DrawItemEventArgs e)
            {
                try
                {
    
                    TabControl tc = (TabControl)sender;
                    Rectangle myTabRect = tc.GetTabRect(e.Index);
    
                    //先添加TabPage属性      
                    e.Graphics.DrawString(tc.TabPages[e.Index].Text,
    new Font("宋体", 12), SystemBrushes.ControlText, myTabRect.X + 0, myTabRect.Y + 5);
                    //再画一个矩形框   
                    using (Pen p = new Pen(Color.Transparent))
                    {
                        myTabRect.Offset(myTabRect.Width - (CLOSE_SIZE + 3), 5);
                        myTabRect.Width = CLOSE_SIZE;
                        myTabRect.Height = CLOSE_SIZE;
                        e.Graphics.DrawRectangle(p, myTabRect);
                    }
    
                    //填充矩形框   
                    Color recColor = e.State == DrawItemState.Selected
                              ? Color.DarkOrange : Color.Transparent;
                    using (Brush b = new SolidBrush(recColor))
                    {
                        e.Graphics.FillRectangle(b, myTabRect);
                    }
    
                    //画关闭符号   
                    using (Pen objpen = new Pen(Color.Black, 2))
                    {
                        //=============================================   
                        //自己画X   
                        //""线   
                        Point p1 = new Point(myTabRect.X + 3, myTabRect.Y + 3);
                        Point p2 = new Point(myTabRect.X + myTabRect.Width - 3, myTabRect.Y + myTabRect.Height - 3);
                        e.Graphics.DrawLine(objpen, p1, p2);
                        //"/"线   
                        Point p3 = new Point(myTabRect.X + 3, myTabRect.Y + myTabRect.Height - 3);
                        Point p4 = new Point(myTabRect.X + myTabRect.Width - 3, myTabRect.Y + 3);
                        e.Graphics.DrawLine(objpen, p3, p4);
    
                        ////=============================================   
                        //使用图片   
                        // Bitmap bt = new Bitmap(Application.StartupPath+"\Image\close.png");
                        //Bitmap bt = new Bitmap(new Image( Application.StartupPath + "\Image\close.png",10,10);
    
    
                        //Point p5 = new Point(myTabRect.X, 4);
    
                        //e.Graphics.DrawImage(bt, p5);
                        //e.Graphics.DrawString(this.MainTabControl.TabPages[e.Index].Text, this.Font, objpen.Brush, p5);   
                    }
                    e.Graphics.Dispose();
                }
                catch (Exception)
                { }
            }
           static void tabControl_MouseDown(object sender, MouseEventArgs e)
            {
                try
                {
                    TabControl tc = (TabControl)sender;
                    if (e.Button == MouseButtons.Left)
                    {
                        int x = e.X, y = e.Y;
                        //计算关闭区域      
                        Rectangle myTabRect = tc.GetTabRect(tc.SelectedIndex);
    
                        myTabRect.Offset(myTabRect.Width - (CLOSE_SIZE + 3), 2);
                        myTabRect.Width = CLOSE_SIZE;
                        myTabRect.Height = CLOSE_SIZE;
    
                        //如果鼠标在区域内就关闭选项卡      
                        bool isClose = x > myTabRect.X && x < myTabRect.Right && y >
        myTabRect.Y && y < myTabRect.Bottom;
                        if (isClose == true)//关闭窗口
                        {
                            //tabControl.SelectedTab.Tag
                            tc.TabPages.Remove(tc.SelectedTab);
                            //tabPageList.Remove(tc.SelectedTab.Tag.ToString());
                            //PageListCheck();
                        }
                    }
                }
                catch { }
            }
            #endregion
    View Code

     >> winForm禁用鼠标滚轮

    //实现一,禁用全局的鼠标滚轮
    public partial class Form1 : Form, IMessageFilter
    {
        public Form1()
        {
            InitializeComponent();
        }
    
        #region IMessageFilter 成员
    
        public bool PreFilterMessage(ref Message m)
        {
            if (m.Msg == 522)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
    
        #endregion
    
        private void Form1_Load(object sender, EventArgs e)
        {
            Application.AddMessageFilter(this);
        }
    }  
    
    
    //实现二,禁用ComBoBox的鼠标滚轮
    class comBoBoxEx : System.Windows.Forms.ComboBox
        {
            public bool isWheel = false;
            public string strComB = null;
            protected override void OnMouseWheel(System.Windows.Forms.MouseEventArgs e)
            {
                strComB = Text;
                isWheel = true;
            }
    
            protected override void OnMouseDown(System.Windows.Forms.MouseEventArgs e)
            {
                base.OnMouseDown(e);
                isWheel = false;
    
            }
    
            protected override void OnSelectedIndexChanged(EventArgs e)
            {
    
                base.OnSelectedIndexChanged(e);
                if (isWheel)
                {
                    Text = strComB;
                }
            }
        }
    //实现三,禁用单个控件的鼠标滚轮(未验证)
     private void Form1_Load(object sender, EventArgs e)
            {
                numericUpDown1.MouseWheel += new MouseEventHandler(numericUpDown1_MouseWheel);
            }
    
            //取消滚轮事件
            void numericUpDown1_MouseWheel(object sender, MouseEventArgs e)
            {
                HandledMouseEventArgs h = e as HandledMouseEventArgs;
                if (h != null)
                {
                    h.Handled = true;
                }
            }
    View Code
  • 相关阅读:
    Struts2+Spring3+Mybatis3开发环境搭建
    spring+struts2+mybatis
    【LeetCode】Populating Next Right Pointers in Each Node
    【LeetCode】Remove Duplicates from Sorted Array
    【LeetCode】Remove Duplicates from Sorted Array II
    【LeetCode】Binary Tree Inorder Traversal
    【LeetCode】Merge Two Sorted Lists
    【LeetCode】Reverse Integer
    【LeetCode】Same Tree
    【LeetCode】Maximum Depth of Binary Tree
  • 原文地址:https://www.cnblogs.com/eye-like/p/5121899.html
Copyright © 2011-2022 走看看