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);

    }

     

     


  • 相关阅读:
    洛谷—— P3353 在你窗外闪耀的星星
    洛谷—— P1238 走迷宫
    洛谷—— P1262 间谍网络
    9.8——模拟赛
    洛谷—— P1189 SEARCH
    算法
    May 22nd 2017 Week 21st Monday
    May 21st 2017 Week 21st Sunday
    May 20th 2017 Week 20th Saturday
    May 19th 2017 Week 20th Friday
  • 原文地址:https://www.cnblogs.com/chillsrc/p/1258135.html
Copyright © 2011-2022 走看看