hbhbice

导航

C# 实现 类似Android的Toast

    public partial class ToastForm : Form
    {
        /// <summary>
        /// 显示毫秒
        /// </summary>
        private int _wait_ms = 1000;


        public ToastForm(double seconds, string text, Form parent)
            : this(seconds, text, parent, Color.Blue, 15, ContentAlignment.TopCenter)
        {
        }

        public ToastForm(double seconds, string text, Form parent, int font_size)
            : this(seconds, text, parent, Color.Blue, font_size, ContentAlignment.TopCenter)
        {
        }



        public ToastForm(double seconds, string text, Form parent, Color text_color, int font_size, ContentAlignment textAlignment)
        {
            InitializeComponent();
            _wait_ms = (int)(seconds * 1000);
            if (font_size != lbShow.Font.Size) lbShow.Font = new Font(lbShow.Font.Name, font_size, lbShow.Font.Style);
            lbShow.Text = text;
            if (lbShow.TextAlign != textAlignment) lbShow.TextAlign = textAlignment;
            this.lbShow.ForeColor = text_color;
            this.Left = parent.Left + (parent.Width - this.Width) / 2;
            this.Top = parent.Top + (parent.Height - this.Height) / 2;
        }

        private void ToastForm_Load(object sender, EventArgs e)
        {
            Thread t = new Thread((ThreadStart)delegate
            {
                Thread.Sleep(_wait_ms);
                try
                {
                    this.Invoke(new EventHandler((s1, e1) => this.Close()));
                }
                catch
                {
                }
            });
            t.IsBackground = true;
            t.Start();
        }
    }

 

posted on 2013-04-20 22:38  hbhbice  阅读(617)  评论(0编辑  收藏  举报