功能說明 : 避免程式被不小心關閉(按右上角的[X]會縮小, 不會關閉), 不要佔用下方工具列, 縮小到系統匣, 縮小時右下角出現提示訊息.

其他功能說明 : 複製指定檔案, 指定來源及目的路徑, 會遞迴往下尋找資料夾, 目的路徑自動複製來源資料夾的結構.

 

config : 指定檔案, 指定來源及目的路徑.

config1.png

執行畫面

run0.png

按[X]縮小到系統匣.

run1.png

要關閉程式需在系統匣圖示按右鍵, 點[Exit]離開.

run2.png

 

1. 先拉Layout

Layout.png

NotifyIcon : notifyIcon1 系統匣圖示

    *Text一定要設定, 否則縮小到系統匣會看不到. 指定系統匣用的選單.

    notifyIcon1-1.png

ContextMenuStrip : contextMenuStrip1 系統匣選單

    contextMenuStrip1.png

TextBox : textBox1 用來顯示訊息

    textBox1.png

BackgroundWorker : backgroundWorker1 使用背景作業複製檔案, 避免視窗凍結

    *設定 : 可以即時回報訊息, 可以取消背景作業.

    backgroundWorker1-1.png

Timer : timer1 計時器, 才能每隔一段時間執行檔案複製

    timer1-1.png

 

2. 用到的事件

NotifyIcon : notifyIcon1 系統匣圖示

    *單擊 跟 雙擊 圖示, 都可開啟畫面.

    notifyIcon1-2.png

    notifyIcon1-3.png

ToolStripMenuItem : exitToolStripMenuItem 系統匣選單項目

    *因為按[X]不能關閉程式, 所以系統匣提供選單[Exit]讓使用者關閉程式.

    exitToolStripMenuItem3.png

    exitToolStripMenuItem4.png

BackgroundWorker : backgroundWorker1 背景作業

    *指定各個背景作業事件, 因為要能夠回報訊息, 所以有宣告一個全域變數msg存訊息.

    *DoWork裡面不能變動到外部元件(例如寫 TextBox.Text="xxx" 這樣是不行的).

    backgroundWorker1-2.png

    backgroundWorker1-3.png

    backgroundWorker1-4.png

    backgroundWorker1-5.png

Timer : timer1 計時器

    timer1-2.png

    timer1-3.png

Form : 

    *攔截關閉事件, 判斷是要關閉還是要最小化到系統匣.

    *這裡是用 this.WindowState != FormWindowState.Minimized 來判斷. 當視窗不是最小化的時候, 就取消關閉Form事件, 并顯示系統匣圖示.

    Form.png

    FormClosing.png

Others :

    宣告一個全域變數msg存訊息.

    Start.png

    ShowForm.png

    GetFilePathList1.png

    CreatePath1.png

    todo1.png

    todo2.png

 

伊 發表在 痞客邦 PIXNET 留言(0) 人氣()

IMG_0553.JPG

 

我的防曬產品是在非常的多啊...

看到新鮮貨 或 被小姐推銷, 很容易就買了, 但是又都懶得擦, 存貨一堆呢! (請看存貨圖XD)

IMG_0541.JPG
左至右 : 資生堂安耐曬藍瓶  珂潤防曬液  理膚寶水全護潤色  安麗CC霜  Sisley全效防曬  水美媒CC霜

 

擦防曬卻懶得卸妝的我, 最愛用的是[理膚寶水全護潤色], 這瓶不需要額外的卸妝步驟, 也不會長痘痘或粉刺, 

但是男友說我擦這瓶, 看起來油光滿面, 他不喜歡 Q_Q 所以大約1年半的時間, 都沒擦防曬!

最近被男友說我曬得很黑, 決心要好好的防曬一下了~

 

[理膚寶水全護潤色]已經用完, 而其他防曬都需卸妝的狀況下.. 我又開始找新歡了!

上網查了很多的文章, 發現 愛芮兒珍的防曬粉撲 最符合我的需求, 不需卸妝, 不會滿臉油光, 也可以當蜜粉使用, 一兼二顧!

 

馬上就上網找店家購買, 選中的店家是 台灣雷射藥妝網, 新客有100元抵用金, 而且賣的是公司貨, 不怕用到水貨!

我除了買愛芮兒珍的防曬粉撲(2060), 還買了常用的理膚寶水多容安洗面乳(700打8折), 有湊到2500滿額贈, 送了一瓶愛斯德瑪的卸妝水.

店家還另外送了許多 贈品(理膚寶水: 多容安乳液, BB霜, 卸妝水, 50ml噴霧) / 試用包(薇姿水面膜 及 朵瑪卸妝水).

IMG_0551.JPG
*要提一下朵瑪卸妝水, 超好用!
用化妝棉充分沾濕卸妝水, 輕輕擦拭臉部, 即可卸的很乾淨, 而且不需再水洗, 臉也不覺得黏黏 或 悶悶的, 像是剛洗完臉一般的清爽保濕.

 

整盒的主角就是這瓶啦~ 目前才剛開使用, 等用了一陣子再來分享使用心得囉^_^

IMG_0554.JPG

 

 

 

伊 發表在 痞客邦 PIXNET 留言(0) 人氣()

IMG_0579.JPG

由於一直買不到SK-II青春精華露(30ml 4900元)買一送一, 今年母親節就開始研究其他品牌的精華液.

也沒怎麼做功課, 就被雅詩蘭黛美麗的官網及很有誠意的新客活動給吸過去了~

雅詩蘭黛官網購物畫面很簡單 好操作, 且流程順暢, 讓我沒考慮多久就刷卡結帳了! (汗

主要是購買特潤精華液, 不小心手滑也買了特潤眼霜...

 

母親節活動真的很棒喔!

滿3500, 贈 迷你年輕金三角組 : 
微分子肌底原生露15ml 
特潤超導修護露7ml 
年輕肌密無敵霜7ml 
桃紅花漾巧妝包

滿4800, 贈 年輕權威修護組 : 
特潤超導精萃潔顏乳30ml
微分子肌底原生露30ml
特潤超導修護露7ml
年輕肌密無敵霜15ml
超智慧眼霜5ml
絕對慾望光感唇蜜4.6ml 

買 眼部類/修護類/唇膏類/底妝類, 除了可以參加滿額贈之外, 還額外加贈! (以下為官網截圖)

雅詩蘭黛2017母親節加贈.png

眼部加贈 :
任選單件眼部保養品 (限單價$1,800以上)
特潤超導修護露 7ml
微分子肌底原生露 7ml
特潤超導眼部修護霜 3ml

修護加贈 :
任選單件修護保養品 (不適用於眼部保養與價值少於$1800之商品)
超未來立體緊緻精華4ml
特潤超導眼部修護霜3ml
年輕肌密無敵霜15ml

即刻變妝美唇組 :
任選兩件唇彩商品
極淨光透白修護隔離乳 5ml
粉持久完美持妝粉底 5ml
微分子肌底原生露 15ml

粉持久底妝生火組 :
任選兩件底妝
特潤超導修護露 7ml
微分子肌底原生露 15ml
年輕肌密無敵霜 15ml
隨身巧妝包

 

所以我只買了 特潤超導修護露30ml + 特潤超導眼部修護霜15ml , 就送了一大堆贈品.

不只這樣!!! 新客第一次購物, 加贈特潤超導修護露7ml + 結帳再打9折!!!

非常划算啊~~~

 

收到包裹, 打開厚紙箱, 裡面是純白的雅詩蘭黛紙盒(也是厚紙箱材質), 封口處貼了美美的雅詩蘭黛貼紙, 看了心情超好~

IMG_0562.JPG

 

打開後, 裡面有一張雅詩蘭黛制式的謝卡(心情好x2), 而且產品用雅詩蘭黛的包裝紙包的很精美, 也貼上了美美的雅詩蘭黛貼紙~

IMG_0564.JPG

 

拆開包裝紙後, 看到美美的雅詩蘭黛產品紙盒(好美的淺藍綠色, 心情好x3), 加贈的贈品大部分也都是紙盒版耶~

IMG_0576.JPG

 

這是滿額贈的贈品部分, 都有用專屬的透明袋包起來, 袋子內都有附上產品說明書及保存期限的解讀方式.

被我拆開來拍照了~

IMG_0567.JPG

 

購物心得就分享到此囉~~~使用心得敬請期待 ^___^

 

伊 發表在 痞客邦 PIXNET 留言(0) 人氣()

參考:http://no2don.blogspot.com/2013/02/c-nopi-excel-xls.html

下載NPOI的dll,放到專案 (共五個dll)

using NPOI.XSSF.UserModel;
using NPOI.SS.UserModel;

//建立 Workbook
XSSFWorkbook wb = new XSSFWorkbook();

//建立一個叫做"Sheet1"的 Sheet
XSSFSheet st = (XSSFSheet)wb.CreateSheet("Sheet1");

//生成一個新Row (第一列:0, 第二列:1, ...類推)
int row_index = 0;
st.CreateRow(row_index);
//生成這個Row的Cell, 且放值進去 (第一格:0, 第二格:1, ...類推)
st.GetRow(row_index).CreateCell(0, CellType.String).SetCellValue("內容值"); //A1
st.GetRow(row_index).CreateCell(1, CellType.String).SetCellValue("內容值"); //B1

//再生成一個新Row
st.CreateRow(++row_index);
//生成這個Row的Cell, 且放值進去
st.GetRow(row_index).CreateCell(0, CellType.String).SetCellValue("內容值"); //A2
st.GetRow(row_index).CreateCell(1, CellType.String).SetCellValue("內容值"); //B2

//寫入
var file = new FileStream("檔案路徑\\檔案名稱.xlsx", FileMode.Create);
wb.Write(file);
file.Close();

//關閉 Workbook
wb = null;

伊 發表在 痞客邦 PIXNET 留言(0) 人氣()

工作上突然有一個遞迴的需求

需求並不複雜, 用程式就能簡簡單單的寫完

但是SQL語法非常不熟練的我, 突然想說 來練練SQL語法好了 (加上懶得再改程式...)

所以就來研究了一下SQL的遞迴寫法

 

<範例>

有一個資料表: [員工資料表]

欄位很簡單: [主管], [員工]

[主管]欄位是NULL的[員工], 代表沒有人管他, 就是大主管的意思

需求是: 當輸入一個員工姓名, 要把該員工下面所有階層的員工都Show出來

 

SQL語法:

WITH [員工資料表new] AS (
 --找出 [主管] 為 某人 或 NULL 的資料當作 依據
 SELECT [主管], [員工]
 FROM [員工資料表]
 WHERE [主管] = '郭董' --NULL
 
 UNION ALL
 
 --之後以 上面查出的結果 為依據遞迴查詢
 SELECT e.[主管], e.[員工]
 FROM [員工資料表] e
 INNER JOIN [員工資料表new] ecte ON ecte.[員工] = e.[主管]
)
SELECT *
FROM [員工資料表new]

 

實際上工作的需求:

輸入一成品ID, 帶出該產品所需使用的全部材料.

因為材料本身也可能是成品(Type=A或F), 那就要針對是成品的材料再遞迴找出它的材料是什麼, 依此遞迴下去..

DECLARE @APART nvarchar(20) = 'ABC1234567890'

;WITH [MY_BOM] AS (

SELECT b.[APart]
    , b.[Part]
    , p.[Type]
FROM [BOM] b
INNER JOIN [Material] p ON b.[Part] = p.[Part]
WHERE b.[APart]=@APART 

UNION ALL

SELECT bom.[APart]
    , bom.[Part]
    , part.[Type]
FROM [BOM] bom
INNER JOIN [Material] part ON bom.[Part] = part.[Part]
INNER JOIN [MY_BOM] ecte ON ecte.[Part] = bom.[APart] AND (ecte.[Type]='A' OR ecte.[Type]='F')
)
SELECT * FROM [MY_BOM] WHERE [Type]!='A' AND [Type]!='F';

 

伊 發表在 痞客邦 PIXNET 留言(0) 人氣()

找更多相關文章與討論