1. 為什麼C#中timer控制項沒反應
不建議你這么寫。
最好從工具箱里拖一個timer放到form1裡面,從屬性裡面改名字為atime。
這樣編譯器就把所有的屬性,包括你能想到的,你想不到的,全部自動生成了代碼。
form1在載入的時候也把atime全部初始化好了,你就不用考慮細節。
雙擊atime構件,加上atime觸發時執行的代碼。
你使用的時候就只用規范interval(這個在屬性里也能設置),開啟enabled就可以了。
2. vc++6.0操作方法
VC++6.0上機操作指南
貴州大學計算機科學與技術學院
張志明
2006年9月
目錄
1. Visual C++ 控制台應用程序上機實現步驟
2. MFC對話框應用程序實現舉例
3. MFC單文檔應用程序實現舉例
4. 用32位調試程序了解類和對象的內存映象
1. Visual C++控制台應用程序(Win32 Console Application Project)
上機實現步驟
一. 單文件程序的實現
本教材中的程序在Visual C++環境下都是以Win32 Console Application 項目實現,而且都是單文件程序,即只含有一個源程序(.cpp)文件的C++程序。
一個單文件程序在Visual C++ IDE中的實現主要步驟是:(1)建立新項目(2)建立新文件(3)輸入源代碼(4)編譯、連接,生成可執行程序文件。以上步驟均可在Visual C++的Wizard指導下通過對話框交互輸入完成。
1. 建立新項目:
每個C++程序的實現都要建立一個項目。所謂項目是一個文件生成過程的管理單位,項目名稱就是最後實現的可執行文件的名稱,一個項目就是與生成這個可執行程序文件相關的所有源文件和中間文件的集合,存放在以項目名稱命名的文件夾中。
圖1 Microsoft Visual C++ 6.0系統初始界面
執行菜單命令File>New,打開New對話框:
圖2 打開New對話框
在New對話框的Project選項卡中選擇Win32 Console Application選項,然後輸入項目存放位置項目名稱後確定。
圖3 輸入項目位置和名稱
在Win32 ConsoleApplication-Step 1 of 1對話框中選擇An empty project,完成後返回。系統彈出新建項目信息報告對話框。
圖4 Win32 ConsoleApplication-Step 1 of 1對話框
圖5 新建項目信息報告
2. 建立新文件:
再一次執行菜單命令File>New,打開New對話框,在File選項卡中選擇C++ Sourse File選項,然後輸入源程序文件名。完成後系統打開源程序(.cpp)文件編輯窗口。
圖6 在New對話框輸入源程序文件名
3. 輸入源代碼:
此時即可在源程序(.cpp)文件編輯窗口輸入源程序代碼。
圖7 源程序(.cpp)文件編輯窗口
4. 生成和運行可執行程序文件:
11從源程序文件生成可執行文件,需要經歷編譯,連接兩步,在VC++6.0編程環境中可以有以下幾種操作方式:
(1)打開Build (編譯)菜單,先執行Compile命令,接著再執行Build命令。
(2)打開Build (編譯)菜單,執行Rebuilde All命令。
(3)打開Build (編譯)菜單,直接發出Execute 執行命令,一次性完成編譯、連接和啟動程序執行的任務。
(4)直接單擊「!」(BuildExecute)命令按鈕,一次性完成編譯、連接和啟動程序執行的任務。
圖8 Build (編譯)菜單
圖9 程序運行結果
打開工程文件夾可以找到該工程的所有工作文件。
打開工程文件夾中的Debug子文件夾,可以找到生成的可執行(.exe)文件。
二. 多文件程序的實現
一個較大型C++程序,有時需要包含多個源程序文件。一種常見的情況是將類的定義放在頭(.h)文件中,將類的實現或對類的訪問放在源(.cpp)文件中。
多文件程序的實現與單文件程序的實現方式需要經歷同樣的步驟,不同的是,在編譯之前需要利用新建文件對話框逐一將所有需要的文件追加到項目中。
1. 建立新項目:
2. 建立新文件:
(1)加入和編輯頭文件:
在New對話框,在File選項卡中選擇C/C++ Header File選項,然後輸入頭文件名。完成後系統將打開源程序(.h)文件編輯窗口。
(2)加入和編輯源程序文件
打開New對話框,在File選項卡中選擇C++ Sourse File選項,然後輸入源程序文件名。完成後系統打開源程序(.cpp)文件編輯窗口。
注意:在源程序文件中應該用文件包含命令將頭文件包含進來。如下例源程序文件s719.cpp的第一行:#include"h719.h"
3. 生成和運行可執行程序文件:
步驟同單文件程序的生成和執行。
#
2.MFC對話框應用程序實現舉例
本指導書給出3個MFC對話框應用程序的實現實例,例1為求三科平均成績的簡單程序,例2為實現一個具有四則運算功能的簡單計算器,例3為一個彩票機程序(提供手動搖號和自動搖號兩個彩票機程序版本)。
通過這些程序可以達到以下目的:
掌握AppWizard的使用方法。
掌握Workshop中各種視圖的使用和在不同視圖之間切換的方法。
學會利用控制項工具箱中的控制項定製對話框界面。
學會控制項變數及其他類成員變數的設置。
學會消息映射的概念和操作方法。
學會查看和編輯代碼。
學習編譯、運行和調試對話框應用程序。
例1.實現一個求三科平均成績的MFC對話框應用程序。假設運行時的界面如下:
實現步驟:
1. 在Visual C++ 6.0工作開發環境中,New對話框中選擇MFC AppWizard [exe]項目,輸入項目名稱並指定存放位置。
2. 在MFC Wizard Step1選擇Dialog(基本對話)程序類型,在MFC Wizard Step2中輸入對話框標題「求平均成績」。
AppWizard對話結束後打開對話框編輯窗口如下:
3. 定製界面:添加控制項、設置屬性
刪除對話框模板中原有的「確定」按鈕和內容為「TODO: 在這里設置對話控制。」的Static Text控制項。
在控制項工具箱中取一個Group Box控制項,調整適當大小,滑鼠右鍵單擊該控制項邊框,在彈出的下拉菜單中打開屬性對話框。將Group Box控制項標題由「Static」改為「求平均分」。
在Group Box中添加4個Static Text控制項,按同樣方法修改它們的標題屬性為「成績1」、「成績2」、「成績3」和「平均分」。
在Group Box中添加4個Edit Box控制項,打開屬性對話框的Extended Styles選項卡中將它們設置為文本右對齊(Right Aligend Text)方式。其中第4 個Edit Box控制項的Styles屬性設置為Read-only。
在Group Box中添加一個按鈕Button1,打開屬性對話框將按鈕的標題屬性改為 「計算平均分」。
滑鼠右鍵單擊「取消」按鈕邊框,在彈出的下拉菜單中打開屬性對話框。將按鈕標題改為「退出」。
設計完成的界面如圖,其中控制項屬性列表如下:
控制項
ID號
標題
屬性
Group Box
IDC_STATIC
求平均分
Static Text
IDC_STATIC
成績1
Static Text
IDC_STATIC
成績2
Static Text
IDC_STATIC
成績3
Static Text
IDC_STATIC
平均分
Edit Box
IDC_EDIT1
Align text:Right
Edit Box
IDC_EDIT2
Align text:Right
Edit Box
IDC_EDIT3
Align text:Right
Edit Box
IDC_EDIT4
Align text:Right;Read-only
Button
IDC_BUTTON1
計算平均分
Button
IDCANCEL
退出
4. 添加成員變數
單擊View(查看)>ClassWizard(建立類向導)菜單進入ClassWizard,打開Member Variables選項卡:為4 個Edit Box控制項設置對應的變數:
同樣的方法為其它3個Edit Box控制項設置變數:
控制項ID
變數名
變數類型
數值范圍
IDC_EDIT1
m_S1
int
0~100
IDC_EDIT2
m_S2
int
0~100
IDC_EDIT3
m_S3
int
0~100
IDC_EDIT4
m_Sav
CString
5. 添加消息映射(兩條消息)
進入ClassWizard,打開Messages Maps選項卡,在Object Ids中選擇CAverageDlg,在Messages中滑鼠單擊WM_INIDIALOG,在Member functions中出現生成的消息映射成員函數OnInitDialog提示:
在Object Ids中選擇IDC_BUTTON1,在Messages中滑鼠單擊BN_CLIKED,在彈出對話框中單擊OK按鈕:在Member functions中出現第二個生成的消息映射成員函數OnButton1。
6. 添加代碼
在ClassWizard中雙擊OnInitDialog函數,打開代碼編輯器中的OnInitDialog()函數代碼,找到其中的 // TODO: Add extra initialization here,加入下面的黑體字給出的3行代碼:
BOOL CDlgDlg::OnInitDialog()
{
CDialog::OnInitDialog();
…;
// TODO: Add extra initialization here
m_Sav="0.00";
m_S1=m_S2=m_S3;
UpdateData(FALSE);
return TRUE; // return TRUE unless you set the focus to a control
}
在ClassWizard中雙擊OnButton1()函數,打開代碼編輯器中的OnButton1()函數代碼,找到其中的 // TODO: Add extra initialization here,加入下面的黑體字給出的4行代碼:
void CDlgDlg::OnButton1()
{
// TODO: Add extra initialization here
UpdateData();
double ave=(double)(m_S1+m_S2+m_S3)/3.0;
m_Sav.Format("%6.2f",ave);
UpdateData(FALSE);
}
7. 編譯運行程序:
注釋:
UpdateData()函數的作用是允許更新控制項變數,
UpdateData(FALSE) 禁止更新控制項變數的值。
例2.設計MFC對話框應用程序,實現一個具有四則運算功能的簡單計算器。
1. 新建項目:
2. 定製界面:
(1) 修改MFC AppWizard自動創建的對話框項目模板。刪除模板上自動創建的三個控制項。
(2) 加入「簡單計算器」、「請輸入數據:」、「結果」三個靜態文本框和相應的3個編輯框。
(3) 加入一個Group Box,標題修改為「請選擇運算符:」,並在其中放入4個Radio Button將標題分別改為「+」、「-」、「*」、「/」。
(4) 繼續用滑鼠從工具箱中向對話框添加和3個按鈕控制項,更改按鈕的標題為「計算」、「清除」、「關閉」。
3. 添加變數
本例中用到以下4個CSimpleCalcDlg類的成員變數:
變數類型
名稱
float
m_N1
float
m_N2
float
m_ Result
char
Operator
用ClassWizard為編輯框添加變數:m_N1, m_N2, m_Result
變數char Operator的添加方法:
在WorkSpace中進入ClassView視圖, 滑鼠右鍵單擊CSimpleCalcDlg, 在菜單中選擇「Add Member Variable…」
然後在彈出的對話框的輸入變數類型和名稱:
4. 添加消息映射
用ClassWizard為按鈕控制項添加消息映射:
繼續用ClassWizard為Radio Button控制項添加消息映射:
5. 加入單擊按鈕時的事件響應代碼
在實現文件(cpp文件)中加入單擊按鈕時的事件響應代碼。(雙擊一個按鈕可直接進入函數編輯)
//選擇運算符
void CSimpleCalcDlg::OnRadio1()
{ Operator='+'; }
void CSimpleCalcDlg::OnRadio2()
{ Operator='-'; }
void CSimpleCalcDlg::OnRadio3()
{ Operator='*'; }
void CSimpleCalcDlg::OnRadio4()
{ Operator='/'; }
//計算
void CSimpleCalcDlg::OnButton1()
{
UpdateData();
switch(Operator)
{
case '+':
m_Result=m_N1+m_N2;
break;
case '-':
m_Result=m_N1-m_N2;
break;
case '*':
m_Result=m_N1*m_N2;
break;
case '/':
if(m_N2 == 0 )
MessageBox("除數不能為零!");
else
{
m_Result = m_N1/m_N2;
break;
}
default:
m_Result=m_N1+m_N2;
}
UpdateData(FALSE);
}
//清除
void CSimpleCalcDlg::OnButton2()
{
UpdateData();
m_N1=0;
m_N2=0;
m_Result=0;
UpdateData(FALSE);
}
//關閉
void CSimpleCalcDlg::OnButton3()
{ CDialog::OnOK(); }
6. 編譯運行程序
例3. 彩票機程序:
本例給出手動搖號和自動搖號兩個彩票機程序版本。
1. 彩票機界面:
定製含有7個Edit Box 、1個Progress(進度條)和3偵探按鈕控制項的對話框界面如下:
2. 設置變數:
(1) 設置進度條變數:
(2) 設置7個編輯框變數:
(3)添加類成員變數m_x:
3. 消息映射:
在ClassWizard中產生OnInitDialog、OnButton1、OnButton2、OnOK四個消息映射函數:
4. 添加代碼:
//初始化
BOOL CLotusDlg::OnInitDialog()
{
CDialog::OnInitDialog();
……
// TODO: Add extra initialization here
m_x=0;
m_pProg.SetRange(0,70);
srand((unsigned)time(NULL));
return TRUE; // return TRUE unless you set the focus to a control
}
(一)手動搖號
//手動搖號,每按一次搖號按鈕出一個號
void CLotusDlg::OnButton1()
{
// TODO: Add your control notification handler code here
switch(m_x/10)
{
case 0:
m_N1=rand()%36+1;
m_pProg.SetPos(m_x+=10);
break;
case 1:
m_N2=rand()%36+1;
m_pProg.SetPos(m_x+=10);
break;
case 2:
m_N3=rand()%36+1;
m_pProg.SetPos(m_x+=10);
break;
case 3:
m_N4=rand()%36+1;
m_pProg.SetPos(m_x+=10);
break;
case 4:
m_N5=rand()%36+1;
m_pProg.SetPos(m_x+=10);
break;
case 5:
m_N6=rand()%36+1;
m_pProg.SetPos(m_x+=10);
break;
case 6:
m_N7=rand()%36+1;
m_pProg.SetPos(m_x+=10);
break;
}
UpdateData(FALSE);
}
void CLotusDlg::OnButton2()
{
// TODO: Add your control notification handler code here
m_x=0;
m_N1=0;
m_N2=0;
m_N3=0;
m_N4=0;
m_N5=0;
m_N6=0;
m_N7=0;
UpdateData(FALSE);
m_pProg.SetPos(1);
}
void CLotusDlg::OnOK()
{
CDialog::OnOK();
}
(二)自動搖號
將前面實現的手動搖號程序修改為自動定時搖號。
添加OnTimer消息映射函數:
//按搖號按鈕啟動搖號
void CLotusDlg::OnButton1()
{
SetTimer(1,2000,NULL);
}
void CLotusDlg::OnButton2()
{
m_x=0;
m_N1=0;
m_N2=0;
m_N3=0;
m_N4=0;
m_N5=0;
m_N6=0;
m_N7=0;
UpdateData(FALSE);
m_pProg.SetPos(0);
KillTimer(1);
}
void CLotusDlg::OnTimer(UINT nIDEvent)
{
switch(m_x/10)
{
case 0:
m_N1=rand()%36+1;
m_pProg.SetPos(m_x+=10);
break;
case 1:
m_N2=rand()%36+1;
m_pProg.SetPos(m_x+=10);
break;
case 2:
m_N3=rand()%36+1;
m_pProg.SetPos(m_x+=10);
break;
case 3:
m_N4=rand()%36+1;
m_pProg.SetPos(m_x+=10);
break;
case 4:
m_N5=rand()%36+1;
m_pProg.SetPos(m_x+=10);
break;
case 5:
m_N6=rand()%36+1;
m_pProg.SetPos(m_x+=10);
break;
case 6:
m_N7=rand()%36+1;
m_pProg.SetPos(m_x+=10);
break;
}
UpdateData(FALSE);
CDialog::OnTimer(nIDEvent);
}
void CLotusDlg::OnOK()
{
KillTimer(1);
CDialog::OnOK();
}
5. 注釋:
(1)產生隨機數的方法
函數unsigned int rand() 產生隨機數。
函數void srand(unsigned int seed) 設定隨機數產生器的種子,其中seed為隨機數產生器的種子,本例中用系統時鍾當前值作隨機數種子:
srand((unsigned)time(NULL));函數的
表達式rand()%36+1產生1-36之間的隨機數
(3) 定時器的使用方法
定時器的使用涉及OnTimer、SetTimer、KillTimer三個函數。
SetTimer用於設定定時時間和啟動定時器,其中第一個參數是定時編號,第二個參數是定時的毫秒數。本例中將1號定時器定時時間設定為2秒:
SetTimer(1,2000,NULL);
定時器啟動以後將持續工作,每到達一次定時時間即啟動一次OnTimer消息函數的執行。KillTimer的作用是停止指定定時器的工作。
3.
MFC單文檔應用程序實現舉例
創建單文檔應用程序的一般步驟:
利用AppWizard創建單文檔應用程序框架。
在文檔類中聲明保存文檔數據所需要數據對象。
完成文檔類的OnNewDocument函數,初始化新文檔。
完成文檔類的Serialize函數,保持和載入文檔數據。
完成視類的OnInitialUpdate函數,初始化顯示。
完成視類的OnDraw函數,顯示當前文檔內容。
在視類中加入可以使用戶編輯文檔數據所需的代碼。
本實驗指導通過以下4 個實驗循序漸進演示創建單文檔應用程序的基本操作,在前一個例子中演練過的操作,在後面的中出現時不再重復描述。
例1 一個簡單的單文檔應用程序——記事本程序
例2 簡單文本和圖形輸出
例3 利用定時器輸出滾動字幕
例4 文檔串列化編程
例1.
一個簡單的單文檔應用程序——記事本程序
1. 只要在AppWizard的Step 6將Base Class設置為EditView,AppWizard就自動完成了一個記事本程序的設計:
2. 運行程序,即可測試記事本的各種功能:
3.說明:
(1)打開Workshop中的Class視圖,可以看到,一個簡單的單文檔應用程序向導自動建立五個類:
向導自動建立的類
相應源文件
其他源文件
相應頭文件
其他頭文
3. c語言中怎麼設置計時器
#include <iostream>
#include <time.h>
using namespace std;
int main()
{
clock_t start = clock();
//do some process here
clock_t end = (clock() - start)/CLOCKS_PER_SEC;
cout<<"time comsumption is "<<end<<endl;
}
(3)c工具箱中timer擴展閱讀
使用linux的系統設置計時器
#include <sys/time.h>
int main()
{
timeval starttime,endtime;
gettimeofday(&starttime,0);
//do some process here
gettimeofday(&endtime,0);
double timeuse = 1000000*(endtime.tv_sec - starttime.tv_sec) + endtime.tv_usec - startime.tv_usec;
timeuse /=1000;//除以1000則進行毫秒計時,如果除以1000000則進行秒級別計時,如果除以1則進行微妙級別計時
}
timeval的結構如下:
strut timeval
{
long tv_sec; /* 秒數 */
long tv_usec; /* 微秒數 */
};
4. C#裡面怎麼使用Timer
publicForm1()
{
InitializeComponent();
time1.Tick+=newEventHandler(time1_Tick);
time1.Interval=1000;//你是不是這一句跟上一句哪個沒寫
time1.Start();
}
privateinti=0;
voidtime1_Tick(objectsender,EventArgse)
{
Console.WriteLine(i++);
}
Timertime1=newTimer();
5. 關於C# timer組件的問題
從工具箱裡面加的是Tick,從System.Timers裡面加的是Elapsed
6. c++中timer函數怎麼用
===============
<windows.h>
Sleep(int delay);實現延遲,單位毫秒
================
void getto(int x,int y)//游標定位,可用來設置紅心位置,蛇初始位置,信息列印位置等
{
COORD c;
c.X=y;
c.Y=x;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),c);
}
void color(int x)//設置文本顏色,塗色
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),x);
}
==============
<conio.h>
getch();不帶回顯輸入可用於方向鍵識別
方向鍵由兩位asc構成,第一位都是224
第二位:上72 ;下80 ;左75;右77
因此可以如此判斷
if(getch()==224)//公共asc碼
{
char ch=getch();
switch(72): do something....
....
7. C語言 timer函數 和time函數
Timer()函數
語法:Timer ( interval {, windowname } )
參數:指定兩次觸發Timer事件之間的時間間隔,有效值在0到65之間。如果該參數的值指定為0,那麼關閉定時器,不再觸發指定窗口的Timer事件。windowname:窗口名,指定時間間隔到時要觸發哪個窗口的Timer事件。省略該參數時,觸發當前窗口的Timer事件返回值Integer。函數執行成功時返回1,發生錯誤時返回-1。如果任何參數的值為NULL,Timer()函數返回NULL。用法使用Timer()函數可以周期性地觸發指定窗口的Timer事件,這樣,每當時間間隔過去時,應用程序都可以完成一些周期性的工作,比如繪制簡單動畫等。將Timer()的interval參數設置為非0值時啟動定時器並開始計時;將該函數的interval參數設置為0時關閉定時器,終止計時任務。需要注意的是,在Microsoft Windows系統中,該函數能夠計時的最小時間間隔為0.055秒(約1/18秒),如果把interval參數的值設置小於0.055,那麼該定時器將每隔0.055秒觸發一次窗口的Timer事件。Microsoft Windows 3.x最多隻支持系統中同時啟動16個定時器。
用法:
啟動定時器。
啟動定時器就需要使用CWnd類的成員函數SetTimer。CWnd::SetTimer的原型如下:
UINT_PTR SetTimer(
UINT_PTR nIDEvent,
UINT nElapse,
void (CALLBACK* lpfnTimer)(
HWND,
UINT,
UINT_PTR,
DWORD
)
);
參數nIDEvent指定一個非零的定時器ID;參數nElapse指定間隔時間,單位為毫秒;參數lpfnTimer指定一個回調函數的地址,如果該參數為NULL,則WM_TIMER消息被發送到應用程序的消息隊列,並被CWnd對象處理。如果此函數成功則返回一個新的定時器的ID,我們可以使用此ID通過KillTimer成員函數來銷毀該定時器,如果函數失敗則返回0。
通過SetTimer成員函數我們可以看出,處理定時事件可以有兩種方式,一種是通過WM_TIMER消息的消息響應函數,一種是通過回調函數。
如果要啟動多個定時器就多次調用SetTimer成員函數。另外,在不同的CWnd中可以有ID相同的定時器,並不沖突。
time函數
返回某一特定時間的小數值。如果在輸入函數前,單元格的格式為「常規」,則結果將設為日期格式。
函數 TIME 返回的小數值為 0(零)到 0.99999999 之間的數值,代表從 0:00:00 (12:00:00 AM) 到 23:59:59 (11:59:59 P.M.) 之間的時間。
語法:
TIME(hour, minute, second)
TIME 函數語法具有以下參數:
Hour 必需。0(零)到 32767 之間的數值,代表小時。任何大於 23 的數值將除以 24,其餘數將視為小時。例如,TIME(27,0,0) = TIME(3,0,0) = .125 或 3:00 AM。
Minute 必需。0 到 32767 之間的數值,代表分鍾。任何大於 59 的數值將被轉換為小時和分鍾。例如,TIME(0,750,0) = TIME(12,30,0) = .520833 或 12:30 PM。
Second 必需。0 到 32767 之間的數值,代表秒。任何大於 59 的數值將被轉換為小時、分鍾和秒。例如,TIME(0,0,2000) = TIME(0,33,22) = .023148 或 12:33:20 AM。
例子:
<?php$t=time();echo($t . "<br />");echo(date("D F d Y",$t));?>
輸出:
1138618081Mon January 30 2006
8. 請問大牛們怎樣在C語言中實現一個timer事件
api中的SetTimer函數實現
注意在無窗口的控制台程序中要加上消息循環
函數原型
UINT SetTimer(
HWND hWnd,
UINT nIDEvent,
UINT uElapse,
TIMERPROC lpTimerFunc );
回調事件
void CALLBACK TimerProc(
HWND hwnd,
UINT uMsg,
UINT idEvent,
DWORD dwTime );
如果是MFC的程序 就直接響應 WM_TIMER 消息
9. Visual Basic 6.0選擇工具箱中的Timer控制項是什麼控制項
@@@@@@@@@@
呵呵~~~~
其實呢!Timer事件是Visual Basic模擬實時計時的事件.
計時器可以使用其Name屬性,Enablled屬性和Interval屬性.
Interval屬性是設置計時器事件之間的間隔,以毫秒為單位,如果想設置每秒發生N個事件,那麼就是說,把Interval屬性設置植為1000/N.
@@@@@@@@@@@@@@
10. 急急!!!C#高手請進, C#工具箱中找不到timer 控制項,該如何應用timer來限時呢 或有什麼其他更好的方法嗎
在代碼中定義一個Timer
public partial class Form1 : Form
{
Timer tmr;
public Form1()
{
InitializeComponent();
tmr = new Timer();
tmr.Tick += new EventHandler(tmr_Tick);
tmr.Interval = 1000;
}
void tmr_Tick(object sender, EventArgs e)
{
//throw new NotImplementedException();
//事件處理
}
}