zoukankan      html  css  js  c++  java
  • [转] c#有关winform的两个代码片段(多线程操作窗体控件与窗体淡入淡出效果)

     

     

     

    1.多线程操作窗体控件

    delegate void SetTextCallback(string text);

              private void SetText(string text)

              {

                  // InvokeRequired required compares the thread ID of the

                  // calling thread to the thread ID of the creating thread.

                  // If these threads are different, it returns true.

                  if (this.textBox1.InvokeRequired)

                  {

                      SetTextCallback d = new SetTextCallback(SetText);

                      this.Invoke(d, new object[] { text });

                  }

                  else

                  {

                      this.textBox1.Text = text;

                  }

              }

     

    SetText(time.ToString());

    2.

    C#实现窗体淡入淡出效果的几种方法(转)

    1.

        private     void     Form1_Load(object     sender,     System.EventArgs     e)  

        for(double     d=0.01;     d<     1;     d+=0.02)  

        {  

        System.Threading.Thread.Sleep(1);  

        Application.DoEvents();  

        this.Opacity=d;  

        this.Refresh();  

        }

     

     

    2.

     

        private     void     timer1_Tick(object     sender,     System.EventArgs     e)  

        {  

        this.Opacity     =     WinShow     ;  

        WinShow     +=     0.1     ;  

        if(WinShow     >=1     )  

        {  

        timer1.Dispose     ();  

        }  

        }

     

     

    3.

     

    用循环或计时器,  

        frmForm     myForm=new     frmForm()  

        frmForm.Opacity=0;  

        frmForm.show();  

        for(int     i=0;i<100;i++)  

        {  

        Application.DoEvents()  

        frmForm.Opacity=i/100;  

        }

     

     

    4.

     

        #region       ********     窗体淡入效果函数         ********  

        private     double     WinShow     =     0;//用于窗口淡入效果的变量  

       

        private     void     FormShow(System.Windows.Forms.Form     Curfrm)  

        {  

        Curfrm.Opacity     =     WinShow     ;   

        WinShow     +=     0.01;  

        if(WinShow     ==     1)  

        {  

        Curfrm.timerShow.Stop     ();  

        }  

        }  

       

        #endregion  

       

        #region       ********     窗体淡入效果函数调用示例         ********  

        //实现窗口的淡入效果  

        private     void     timerShow_Tick(object     sender,     System.EventArgs     e)  

        {  

        //timerShow,这是一个timer控件名称;把timerShow.interval=100就可以了。  

        FormShow(this);  

        }  

        #endregion

     

    5.

     

    using System.Runtime.InteropServices;

     

     

    public class Win32

             {

                 public const Int32 AW_HOR_POSITIVE = 0x00000001;     // 从左到右打开窗口

                 public const Int32 AW_HOR_NEGATIVE = 0x00000002;     // 从右到左打开窗口

                 public const Int32 AW_VER_POSITIVE = 0x00000004;     // 从上到下打开窗口

                 public const Int32 AW_VER_NEGATIVE = 0x00000008;     // 从下到上打开窗口

                 public const Int32 AW_CENTER = 0x00000010;

                 public const Int32 AW_HIDE = 0x00010000;         // 在窗体卸载时若想使用本函数就得加上此常量

                 public const Int32 AW_ACTIVATE = 0x00020000;     //在窗体通过本函数打开后,默认情况下会失去焦点,除非加上本常量

                 public const Int32 AW_SLIDE = 0x00040000;

                 public const Int32 AW_BLEND = 0x00080000;        // 淡入淡出效果

                 [DllImport("user32.dll", CharSet = CharSet.Auto)]

                public static extern bool AnimateWindow(

                 IntPtr hwnd,   //   handle   to   window   

                 int dwTime,   //   duration   of   animation   

                 int dwFlags   //   animation   type   

                 );

             }

     

     

     

    /*淡入窗体*/

     

    private void Form_Load(object sender, EventArgs e)

    {

             Win32.AnimateWindow(this.Handle, 2000,   Win32.AW_BLEND);

    }

     

     

     

    /*淡出窗体*/

     

    private void Form_FormClosing(object sender, FormClosingEventArgs e)

    {

         Win32.AnimateWindow(this.Handle, 2000, Win32.AW_SLIDE | Win32.AW_HIDE | Win32.AW_BLEND);

    }

  • 相关阅读:
    According to TLD or attribute directive in tag file, attribute end does not accept any expressions
    Several ports (8080, 8009) required by Tomcat v6.0 Server at localhost are already in use.
    sql注入漏洞
    Servlet—简单的管理系统
    ServletContext与网站计数器
    VS2010+ICE3.5运行官方demo报错----std::bad_alloc
    java 使用相对路径读取文件
    shell编程 if 注意事项
    Ubuntu12.04下eclipse提示框黑色背景色的修改方法
    解决Ubuntu环境变量错误导致无法正常登录
  • 原文地址:https://www.cnblogs.com/DBtwoer/p/3048409.html
Copyright © 2011-2022 走看看