2017年8月16日 星期三

C# x Timer x 定時執行


C# x Timer x 定時執行

Form裡面要有 :

Button *1
TextBox1 *1


/////////////////////以下 程式碼/////////////////////

using System;
using System.Windows.Forms;

namespace WindowsFormsApplication31
{
    public partial class Form1 : Form
    {
        System.Timers.Timer testTimer;
        int intNum;
        public Form1()
        {
            InitializeComponent();
        }

        public void myTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
        {
            TextBox1.Text = TextBox1.Text + "\n\n" + intNum.ToString() ;
            intNum = intNum + 1;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (button1.Text == "Star")
            {
                testTimer = new System.Timers.Timer(2000);//定時週期2秒
                testTimer.Elapsed += myTimer_Elapsed;//每兩秒做這件事
                testTimer.AutoReset = true; //是否不斷重複定時器操作
                testTimer.Enabled = true; //定時器啟動
                Control.CheckForIllegalCrossThreadCalls = false;
                button1.Text = "Stop";
            }
            else
            {
                testTimer.Close();
                testTimer.Dispose();
                TextBox1.Text = TextBox1.Text + "\n\n" + "Stop";
                button1.Text = "Star";
            }
        }
    }
}


/////////////////////以上 程式碼/////////////////////


執行畫面






















參考資料 : http://blog.csdn.net/kankankankan2222/article/details/8249602

2017年8月15日 星期二

C# x 判斷路經尋找 x 檔案數量 x 依副檔名找檔名


C# x 判斷路經尋找 x 檔案數量 x 依副檔名找檔名


自動列印標籤用


Form裡面要有 :

Button *1
Label *1

/////////////////////以下 程式碼/////////////////////

using System;
using System.IO;
using System.Windows.Forms;

namespace WindowsFormsApplication32
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            DirectoryInfo dirInfo = new DirectoryInfo(@"D:\test");
            DataGridView dgv = new DataGridView();
            int txtFileCount = dirInfo.GetFiles("*.txt").Length;
            if (txtFileCount != 0)
            {
                label1.Text = dirInfo.GetFiles("*.txt", SearchOption.AllDirectories)[0].ToString();
            }
        }
    }
}

/////////////////////以上 程式碼/////////////////////

執行畫面

























參考資料 : https://dotblogs.com.tw/dc690216/2009/09/17/10684
                   http://ithelp.ithome.com.tw/articles/10029065




2017年8月11日 星期五

C# x 指定檔案路徑 x 列印 x notifyIcon應用


C# x 指定檔案路徑 x 列印 x notifyIcon應用

Form裡面要有 :

Button *1
notifyicon *1
contextmenustrip *1
printdocument *1





/////////////////////以下 程式碼/////////////////////

using System;
using System.Drawing;
using System.Windows.Forms;

namespace WindowsFormsApplication30
{
    public partial class Form1 : Form
    {
        System.IO.StreamReader fileToPrint;
        System.Drawing.Font printFont;

        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            notifyIcon1.Text = "常駐程式";
        }

        private void notifyIcon1_MouseMove(object sender, MouseEventArgs e)
        {
            notifyIcon1.ShowBalloonTip(3000);
        }

        private void Form1_Resize(object sender, EventArgs e)
        {
            if (this.WindowState == FormWindowState.Minimized)
            {
                this.notifyIcon1.Visible = true;
                this.Hide();
            }
            else
            {
                this.notifyIcon1.Visible = false;
            }
        }

        private void notifyIcon1_DoubleClick(object sender, EventArgs e)
        {
            this.Show();
            this.WindowState = FormWindowState.Normal;
        }

        private void OpenTMS_Click(object sender, EventArgs e)
        {
            this.Show();
            this.WindowState = FormWindowState.Normal;
        }

        private void ExitCMS_Click(object sender, EventArgs e)
        {
            this.Close();
            this.Dispose();
            System.GC.Collect();
            System.Environment.Exit(System.Environment.ExitCode);

        }

        private void button1_Click(object sender, EventArgs e)
        {

            fileToPrint = new System.IO.StreamReader(@"D:\test.txt");
            printFont = new System.Drawing.Font("Arial", 10);
            printDocument1.Print();
            fileToPrint.Close();
        }

        private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
        {
            float yPos = 0f;
            int count = 0;
            float leftMargin = e.MarginBounds.Left;
            float topMargin = e.MarginBounds.Top;
            string line = null;
            float linesPerPage = e.MarginBounds.Height / printFont.GetHeight(e.Graphics);
            while (count < linesPerPage)
            {
                line = fileToPrint.ReadLine();
                if (line == null)
                {
                    break;
                }
                yPos = topMargin + count * printFont.GetHeight(e.Graphics);
                e.Graphics.DrawString(line, printFont, Brushes.Black, leftMargin, yPos, new StringFormat());
                count++;
            }
            if (line != null)
            {
                e.HasMorePages = true;
            }
        }
    }
}


/////////////////////以上 程式碼/////////////////////

執行畫面 : 
























參考資料 : https://dotblogs.com.tw/chou/archive/2009/02/25/7284.aspx
                    http://ms-net.blogspot.tw/2008/04/notifyicon-contextmenustrip.html





2017年8月2日 星期三

C# x dateTimePicker x datagridview x 儲存格結合


C# x dateTimePicker x datagridview x 儲存格結合

比原出處多了點東西 : 標題列不可以點、不會改掉其他儲存格

Form裡面要有 :

DataGridView * 1

/////////////////////以下 程式碼/////////////////////
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;

namespace WindowsFormsApplication33
{
    public partial class Form1 : Form
    {
        DateTimePicker oDateTimePicker = new DateTimePicker();

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            List<MyData> oMyDataList = new List<MyData>();

            MyData obj1 = new MyData(1, DateTime.Now, "John");
            MyData obj2 = new MyData(2, DateTime.Now, "Sam");
            MyData obj3 = new MyData(3, DateTime.Now, "Ray");

            oMyDataList.Add(obj1);
            oMyDataList.Add(obj2);
            oMyDataList.Add(obj3);

            dataGridView1.DataSource = oMyDataList;
        }

        private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.ColumnIndex == 1 && e.RowIndex>=0)
            {
                dataGridView1.Controls.Add(oDateTimePicker);
                oDateTimePicker.Format = DateTimePickerFormat.Short;
                Rectangle oRectangle = dataGridView1.GetCellDisplayRectangle(e.ColumnIndex, e.RowIndex, true);
                oDateTimePicker.Size = new Size(oRectangle.Width, oRectangle.Height);
                oDateTimePicker.Location = new Point(oRectangle.X, oRectangle.Y);
                oDateTimePicker.CloseUp += new EventHandler(oDateTimePicker_CloseUp);
                oDateTimePicker.TextChanged += new EventHandler(dateTimePicker_OnTextChange);
                oDateTimePicker.Visible = true;
            }
            else
            {
                oDateTimePicker.Visible = false;
            }
        }
        public void dateTimePicker_OnTextChange(object sender, EventArgs e)
        {
            dataGridView1.CurrentCell.Value = oDateTimePicker.Text.ToString();
        }
        public void oDateTimePicker_CloseUp(object sender, EventArgs e)
        {
            oDateTimePicker.Visible = false;
        }
    }
    class MyData
    {
        public int ID { get; set; }
        public DateTime Date { get; set; }
        public string Name { get; set; }
        public MyData(int id, DateTime dt, string name)
        {
            ID = id;
            Date = dt;
            Name = name;
        }
    }
}

/////////////////////以上 程式碼/////////////////////



執行畫面





























參考資料 : http://www.c-sharpcorner.com/UploadFile/0f68f2/embedding-calendar-datetimepicker-control-into-datagridvie586/