C#AndroidのようなToastを実現

4329 ワード

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

        }

    }