2017/11/29

[C#] 自訂CheckBox勾選區域

CheckBox自訂勾選範圍太小,一直都是常見的使用者抱怨問題
最常見的作法就是使用使用者控制項來模擬一個CheckBox工具
其實我知道還有一個方法就是直接改寫CheckBox的原始碼
奈何在下才疏學淺,一直都不知道重何下手,而網路上也一直找不到好的參考資料
最近偶然發現了一篇改寫CheckBox的方法,當然要趕緊記錄下來。

資料來源:http://inpega.blogspot.tw/2015/02/ccheckbox.html
主要程式碼都不是我所寫的,我只做了一點調整,為了怕以後找不到資料特複製於此,有任何侵權請通知我,我會立即刪除!

public partial class CheckBoxEx : System.Windows.Forms.CheckBox { public override string Text { get { return base.Text; } set { base.Text = value; Size size = TextRenderer.MeasureText(value, Font); if (Width < size.Width + ClientSize.Height) Width = size.Width + ClientSize.Height; } } public override Font Font { get { return base.Font; } set { base.Font = value; Size size = TextRenderer.MeasureText(Text, value); if (Width < size.Width + ClientSize.Height) Width = size.Width + ClientSize.Height; } } protected override void OnPaint(PaintEventArgs e) { int h = ClientSize.Height; Rectangle rc = new Rectangle(new Point(0, 0), new Size(h, h)); e.Graphics.Clear(Parent.BackColor); ControlPaint.DrawCheckBox( e.Graphics, rc, this.Checked ? ButtonState.Checked : ButtonState.Normal ); SizeF size = e.Graphics.MeasureString(Text, Font); e.Graphics.DrawString( Text, this.Font, new SolidBrush(Color.Black), new PointF(h, size.Height < h ? (h - size.Height) / 2 : 0) ); h = 0; e.Dispose(); } }

補充:

改寫Form控制項,不建議在UserControl、CustomControl 這兩個類型上撰寫,這兩個類型容易發生編譯上的錯誤
建議直接在空的Class類別上開發,開發後其他專案就可以直接在空具箱裡使用。

把改寫的控制項放入工具箱步驟:
1.

2.

直接選擇已編譯完成的新控制項物件即可。


2017/11/13

SD 記憶卡規格說明

SD Card 又或者叫SD記憶卡,是需多3C設備用來儲存資料的媒介。
購買SD Card時,往往會被複雜的規格弄得不知所措,特地整理一下規格資料方便以後查詢。

以下資料與圖片來源:SD 協會 https://www.sdcard.org



1.容量標準:規範記憶卡的容量上限與檔案系統
SD標準–容量上限為2GB,使用FAT 12與FAT 16檔案系統。
SDHC標準–容量介於2GB至32GB間,使用 FAT32檔案系統。
SDXC標準–容量介於32GB至2TB間,使用exFAT檔案系統。
2.記憶卡尺寸:規範記憶卡的尺寸大小與可使用的容量標準
SD
V
V
V
miniSD
V
V
microSD
V
V
V

3.速度標準:購買記憶卡最關鍵的規格,規範記憶卡需要達到的傳輸標準。

速度標誌位置


速度標誌分類

三種速度分類之間沒有相對應的關係。

傳輸速率表


影像解析度與建議使用的速度標誌