版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
.NETC/S(WinForm)開發(fā)技巧點(diǎn)滴【轉(zhuǎn)】
花費(fèi)了十天時(shí)間,為公司開發(fā)了一套簡單的網(wǎng)絡(luò)版的信息管理系統(tǒng),功能主要有客戶信息管理,員工信息管理,常用信息管理(各種信函打印、常用網(wǎng)址/常用電話等),公司簡單的財(cái)務(wù)管理等。把一些點(diǎn)點(diǎn)滴滴的技巧在此記錄下來,以備查用。1.數(shù)據(jù)綁定。DataReader讀取數(shù)據(jù),用DataTable.Load(IDataReader)方法將數(shù)據(jù)加載到DataTable,用DataGridView顯示輸出。不要把DataGridView直接綁定到DataReader的目的是數(shù)據(jù)導(dǎo)出到Excel時(shí),數(shù)據(jù)源可以再次從DataGridView獲得。
不要在DataGridView內(nèi)編輯添加數(shù)據(jù),因?yàn)閿?shù)據(jù)類型檢查不嚴(yán)格(或要嚴(yán)格檢查類型需要花費(fèi)更大的成本)。2.數(shù)據(jù)導(dǎo)出到Excel。代碼如下:///
<summary>
///
///
**
DataTable
數(shù)據(jù)導(dǎo)出到
Excel
**
///
///
Author:
周振興
(Zxjay
飄遙)
///
///
E-Mail:
tda7264@163.com
///
///
Blog:
/zxjay
///
///
Date:
07-08-31
///
///
</summary>
Excel.Application
app
=
new
Excel.Application();
app.Visible
=
false;
Excel.Workbook
wb
=
app.Workbooks.Add(true);
Excel.Worksheet
ws
=
(Excel.Worksheet)wb.Worksheets.Add(Type.Missing,
Type.Missing,
Type.Missing,
Type.Missing);
DataTable
dt
=
(DataTable)dgvClientInfo.DataSource;
for
(int
i
=
0;
i
<
dt.Columns.Count;
i++)
{
ws.Cells[1,
i
+
1]
=
dt.Columns[i].ColumnName;
}
for
(int
j
=
0;
j
<
dt.Rows.Count;
j++)
{
for
(int
k
=
0;
k
<
dt.Columns.Count;
k++)
{
ws.Cells[j
+
2,
k
+
1]
=
dt.Rows[j][k];
}
}
app.Visible
=
true;注意:Excel的Cells[,]下標(biāo)是從1,1開始的,而不是0,0。3.防止子窗口重復(fù)打開,確保某一子窗口只打開一次。代碼為:
foreach
(Form
frm
in
this.MdiChildren)
{
if
(frm
is
WorkerList)
{
frm.WindowState
=
FormWindowState.Normal;
frm.Activate();
return;
}
}
WorkerList
wl
=
new
WorkerList();
wl.MdiParent
=
this;
wl.Show();4.使用枚舉enum區(qū)分類同信息。硬編碼方式容易造成混亂。如本系統(tǒng)的常用電話/常用網(wǎng)址,數(shù)據(jù)項(xiàng)都為:名稱-內(nèi)容-備注,可將它們保存在同一個(gè)表中,在程序中為區(qū)分信息類型,可定義以下枚舉:
public
enum
TelWeb
{
Telephone,WebSite
}5.在ToolStrip中加入其它WinForm控件。如在ToolStrip中加入DateTimePicker。如圖:
DateTimePicker
dt1
=
new
DateTimePicker();
dt1.Width
=
110;
ToolStripControlHost
host1
=
new
ToolStripControlHost(dt1);
host1.Alignment
=
ToolStripItemAlignment.Right;
toolStrip1.Items.Insert(10,
host1);6.用微軟的可打印的富文本框控件打印帶格式的文本。與.NETFX自帶的RichTextBox相比只增強(qiáng)了打印功能。通過該控件,可設(shè)置文本字體、顏色、對齊方式、粘貼圖片,可打印看上去很專業(yè)的文檔,截圖如下:7.保存富文本格式到數(shù)據(jù)庫。以二進(jìn)制格式保存。保存的代碼為:
MemoryStream
ms
=
new
MemoryStream();
rtbContent.SaveFile(ms,
RichTextBoxStreamType.RichText);
byte[]
bt=ms.ToArray();
//將bt保存到數(shù)據(jù)庫讀取的代碼為:
byte[]
bt
=
(byte[])SqlHelper.ExecuteScalar(sqlStr,
null);
MemoryStream
ms
=
new
MemoryStream(bt,
false);
rtbContent.LoadFile(ms,
RichTextBoxStreamType.RichText);在SQLServer中對應(yīng)的數(shù)據(jù)類型為:image8.管理員權(quán)限控制。管理員信息表中權(quán)限字段保存一個(gè)字符串,擁有該項(xiàng)權(quán)限則在字符串相應(yīng)位置保存為1,沒有該項(xiàng)權(quán)限為0。在管理員登錄時(shí)判斷權(quán)限,啟用或禁用相應(yīng)的菜單項(xiàng)。9.信息分類。如客戶分類分為:軟件客戶、網(wǎng)站客戶、合作客戶等。如果數(shù)據(jù)量不是太大,可不用單獨(dú)建立分類表,在添加的時(shí)候,客戶類型??捎肅omboBox,在Form加載時(shí)檢索數(shù)據(jù)庫中已有的客戶類型填充到ComboBox中。這樣可選擇已有客戶類型,也可以添加新的客戶類型。10.數(shù)據(jù)庫安裝。不必集成在安裝包中,可單獨(dú)寫一個(gè)WinForm程序來收集連接服務(wù)器的信息(服務(wù)器地址、數(shù)據(jù)庫名、用戶名、密碼等),并執(zhí)行數(shù)據(jù)庫生成的腳本來建立數(shù)據(jù)表,視圖,存儲過程、索引等。
讀取保存數(shù)據(jù)庫腳本文件的代碼:
public
static
string
ReadDBScript(string
fileName)
{
StreamReader
sr
=
new
StreamReader(fileName);
return
sr.ReadToEnd();
}注意:數(shù)據(jù)庫生成的腳本必須把"GO"去掉,否則執(zhí)行時(shí)報(bào)錯(cuò)。11.安全控制。由于是網(wǎng)絡(luò)版系統(tǒng),因而安全性要考慮周全。數(shù)據(jù)庫連接字符串加密保存在配置文件中。為了防止軟件XCopy到其它機(jī)器中,可以取機(jī)器的硬件(如硬盤、網(wǎng)卡、CPU)序列號的一部分再加上自己的私有密鑰作為連接字符串的加密密鑰(八位ASCII),確保密鑰的私密性、每機(jī)器唯一性。(1)取得機(jī)器CPU的ID的前八位作為密鑰:
public
static
string
GetProcessID()
{
try
{
string
str
=
string.Empty;
ManagementClass
mcCpu
=
new
ManagementClass("win32_Processor");
ManagementObjectCollection
mocCpu
=
mcCpu.GetInstances();
foreach
(ManagementObject
m
in
mocCpu)
{
str
=
m["ProcessorId"].ToString().Trim().Substring(0,
8);
}
return
str;
}
catch
(Exception
ex)
{
return
"zhenxing";
//如果失敗取默認(rèn)的密鑰
}
}
(2)加密算法:
public
static
string
Encode(string
data)
{
byte[]
aKey
=
System.Text.ASCIIEncoding.ASCII.GetBytes(GetProcessID());
byte[]
aIV
=
System.Text.ASCIIEncoding.ASCII.GetBytes(GetProcessID());
DESCryptoServiceProvider
cp
=
new
DESCryptoServiceProvider();
MemoryStream
ms
=
new
MemoryStream();
CryptoStream
cs
=
new
CryptoStream(ms,
cp.CreateEncryptor(aKey,
aIV),
CryptoStreamMode.Write);
StreamWriter
sw
=
new
StreamWriter(cs);
sw.Write(data);
sw.Flush();
cs.FlushFinalBlock();
sw.Flush();
return
Convert.ToBase64String(ms.GetBuffer(),
0,
(int)ms.Length);
}
(3)解密算法:
public
static
string
Decode(string
data)
{
byte[]
aKey
=
System.Text.ASCIIEncoding.ASCII.GetBytes(GetProcessID());
byte[]
aIV
=
System.Text.ASCIIEncoding.ASCII.GetBytes(GetProcessID());
byte[]
Enc;
try
{
Enc
=
Convert.FromBase64String(data);
}
catch
{
return
null;
}
DESCryptoServiceProvider
cp
=
new
DESCryptoServiceProvider();
MemoryStream
ms
=
new
MemoryStream(Enc);
CryptoStream
cs
=
new
CryptoStream(ms,
cp.CreateDecryptor(aKey,
aIV),
CryptoStreamMode.Read);
StreamReader
sr
=
new
StreamReader(cs);
return
sr.ReadToEnd();
}
(4)數(shù)據(jù)庫連接字符串保存到配置文件:
public
static
void
SaveT
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 青少年發(fā)展中心學(xué)困生輔導(dǎo)制度
- 公共服務(wù)領(lǐng)域道德宣傳活動(dòng)方案
- 吉林大學(xué)《量子力學(xué)ⅡA》2021-2022學(xué)年第一學(xué)期期末試卷
- 跨國企業(yè)合作協(xié)議書
- 房地產(chǎn)項(xiàng)目備案流程工作總結(jié)
- 科技公司董事聘任協(xié)議書
- 2025屆高考化學(xué)一輪復(fù)習(xí)第五章物質(zhì)結(jié)構(gòu)元素周期律第14講元素周期表元素周期律練習(xí)含解析新人教版
- 2024年內(nèi)地居民離婚登記常見問題解答
- 安徽省皖中聯(lián)盟2023-2024學(xué)年高二上學(xué)期1月期末生物試題 含解析
- 2024年公司機(jī)密信息保密協(xié)議
- 小學(xué)綜合實(shí)踐二年級上冊第3單元《主題活動(dòng)二:變化的影子》教案
- 隱蔽工程工驗(yàn)收記錄(表C5-1)
- 初中挫折教育思政課主題班會教案
- 五四制青島版2022-2023五年級科學(xué)上冊第四單元第13課《蘑菇和木耳》課件(定稿)
- 110kV清水潭變電站工程進(jìn)度計(jì)劃橫道圖
- ZXV10 T502培訓(xùn)資料ppt課件
- 產(chǎn)品可追溯性模擬演練(成品-原料)記錄
- 《會計(jì)檔案管理辦法》講解課件(PPT 79頁)
- 車床PLC改造DOC
- 物業(yè)與裝修公司合作計(jì)劃ppt課件
- 2019CSCO 乳腺癌指南骨轉(zhuǎn)移、腦轉(zhuǎn)移等指南
評論
0/150
提交評論