日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

可能用到的C# WinForm技术小结

發布時間:2025/5/22 C# 58 豆豆
生活随笔 收集整理的這篇文章主要介紹了 可能用到的C# WinForm技术小结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

正文

?????1.?????IntPtr轉換成byte[]

publicbyte[]?ConvertToBytes(IntPtr?dataBuf,?intlength)
????????{
????????????byte[]?byteBuf?=newbyte[length];
????????????Marshal.Copy(dataBuf,?byteBuf,?0,?length);
????????????returnbyteBuf;
????????}

?????2.?????讀寫INI文件

??????????一般用于讀寫配置文件

///<summary>
????///讀寫INI文件
????///</summary>
publicclassIniFile
????{
????????///<summary>
????????///文件INI名稱
????????///</summary>
publicstringPath;

????????///<summary>
????????///聲明讀寫INI文件的API函數?
????????///</summary>
????????///<param?name="section"></param>
????????///<param?name="key"></param>
????????///<param?name="val"></param>
????????///<param?name="filePath"></param>
????????///<returns></returns>
[DllImport("kernel32")]
????????privatestaticexternlongWritePrivateProfileString(stringsection,?stringkey,?stringval,?stringfilePath);


????????[DllImport("kernel32")]
????????privatestaticexternintGetPrivateProfileString(stringsection,?stringkey,?stringdef,?StringBuilder?retVal,?intsize,?stringfilePath);

????????///<summary>
????????///類的構造函數,傳遞INI文件名
????????///</summary>
????????///<param?name="inipath"></param>
publicIniFile(stringinipath)
????????{
????????????//
????????????//TODO:?Add?constructor?logic?here
????????????//
Path?=inipath;
????????}

????????///<summary>
????????///寫INI文件
????????///</summary>
????????///<param?name="Section"></param>
????????///<param?name="Key"></param>
????????///<param?name="Value"></param>
publicvoidIniWriteValue(stringSection,?stringKey,?stringValue)
????????{
????????????WritePrivateProfileString(Section,?Key,?Value,?this.Path);

????????}

????????///<summary>
????????///讀取INI文件指定
????????///</summary>
????????///<param?name="Section"></param>
????????///<param?name="Key"></param>
????????///<returns></returns>
publicstringIniReadValue(stringSection,?stringKey)
????????{
????????????StringBuilder?temp?=newStringBuilder(5000);
????????????inti?=GetPrivateProfileString(Section,?Key,?"",?temp,?5000,?this.Path);
????????????returntemp.ToString();

????????}
????}

?????3.?????獲取網卡號

??????????可用于軟件加密

///<summary>
????????///獲得網卡號
????????///</summary>
????????///<returns></returns>
publicstaticstringGetNetCardMacAddress()
????????{
????????????ManagementClass?mc?=newManagementClass("Win32_NetworkAdapterConfiguration");
????????????ManagementObjectCollection?moc?=mc.GetInstances();
????????????stringstr?="";
????????????foreach(ManagementObject?mo?inmoc)
????????????{
????????????????if((bool)mo["IPEnabled"]?==true)
????????????????????str?=mo["MacAddress"].ToString();
????????????}
????????????returnstr;
????????}

?????4.?????獲取采集卡序列化

??????????可用于軟件加密綁定,注意結構體DS_BOARD_DETAIL.sn是16位的,但是實際只有12位,VC++源碼也只取了12位,后門都是0。

///<summary>
????????///獲取板卡序號
????????///</summary>
????????///<returns></returns>
publicstaticstringGetBoardSN()
????????{
????????????uintboardCount?=HikVisionSDK.GetBoardCount();
????????????StringBuilder?sn?=newStringBuilder();
????????????for(uinti?=0;?i?<boardCount;?)
????????????{
????????????????DS_BOARD_DETAIL?boardDetail?=newDS_BOARD_DETAIL();
????????????????HikVisionSDK.GetBoardDetail(i,?refboardDetail);
????????????????for(intj?=0;?j?<12;?j++)
????????????????{
????????????????????sn.Append((char)(boardDetail.sn[j]?+0x30));
????????????????}
????????????????break;
????????????}
????????????returnsn.ToString();
????????}

?????5.?????全屏顯示視頻窗口

///<summary>
????????///全屏
????????///</summary>
????????///<param?name="tsmFullScreen">右鍵</param>
????????///<param?name="pVideo">顯示視頻的窗口</param>
????????///<param?name="cs">視頻連接成功返回的值</param>
privatevoidFullScreen(ToolStripMenuItem?tsmFullScreen,?Panel?pVideo,?intcs)
????????{
????????????if(this.WindowState?==System.Windows.Forms.FormWindowState.Maximized)
????????????{
????????????????tsmFullScreen.Text?="全屏窗口";
????????????????this.FormBorderStyle?=System.Windows.Forms.FormBorderStyle.FixedSingle;
????????????????this.WindowState?=System.Windows.Forms.FormWindowState.Normal;
????????????????this.TopMost?=false;
????????????????pVideo.Width?=pre_Width;
????????????????pVideo.Height?=pre_Height;
????????????????pVideo.Top?=pre_Top;
????????????????pVideo.Left?=pre_Left;

????????????????//隱藏其他控件
HideOtherControls(pVideo,?true);

????????????????minPanel(pVideo,?cs);
????????????}
????????????else
????????????{
????????????????tsmFullScreen.Text?="關閉全屏";
????????????????this.FormBorderStyle?=System.Windows.Forms.FormBorderStyle.None;
????????????????this.WindowState?=System.Windows.Forms.FormWindowState.Maximized;
????????????????this.TopMost?=true;

????????????????pre_Width?=pVideo.Width;
????????????????pre_Height?=pVideo.Height;
????????????????pre_Top?=pVideo.Top;
????????????????pre_Left?=pVideo.Left;

????????????????pVideo.Width?=this.Width;
????????????????pVideo.Height?=this.Height;
????????????????pVideo.Top?=0;
????????????????pVideo.Left?=0;

????????????????//顯示其他控件
HideOtherControls(pVideo,?false);
????????????}
????????}

?????6.?????其他代碼

//判斷是不是IP地址
publicboolIsIPAddress(stringip)
????????{
????????????returnRegex.IsMatch(ip,?@"^((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)$");
????????}
????????///<summary>
????????///是否是無符號整數(正數)
????????///</summary>
????????///<param?name="value"></param>
????????///<returns></returns>
publicboolIsUInt(stringvalue)
????????{
????????????returnRegex.IsMatch(value,?@"^\d*$");
????????}

?

結束

?????實際開發中遠不只這么多,基本上也是有一個這樣的功能需求就去GOOGLE一段代碼出來,還有其他如delegate和event在窗體之間使用,分屏也是簡單的采用了4個Panel,當放大時就分別隱藏其他Panel等等,就不一一列舉了,多查查資料就行了: )????

轉載于:https://www.cnblogs.com/ywsoftware/archive/2013/02/05/2892554.html

總結

以上是生活随笔為你收集整理的可能用到的C# WinForm技术小结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。