《mynotepad》是類似於word的軟體,但沒有word功能那麼強大,比記事本略強。《mynotepad》是練習控制項、檔案操作的學習軟體,而不是一款商業目的的產品。
軟體的基本功能有字型、字型大小、字型、對齊、編輯等操作,現在讓我們來看看如何實現。
l字型:
private
void tsbfont_click(object sender, eventargs e) }
l字型大小:
private
void tsbfontsize_selectedindexchanged(object sender, eventargs e)
private
void tsbfontsize_keydown(object sender, keyeventargs e) }
private
void setfontsize() catch }
selectedindexchanged是選擇了某個字型大小後設定字型大小大小,keydown是手動輸入字型大小按回車後更改,setfontsize是真正設定的**。
l字型:
//粗體
private
void tsbbold_click(object sender, eventargs e)
//斜體
private
void tsbitalic_click(object sender, eventargs e)
//下劃線
private
void tsbunderline_click(object sender, eventargs e)
注意:font.style是使用^異或來完成的。fontstyle是列舉型別,分別有:
普通文字regular:0
粗體bold:1
斜體italic:2
下劃線underline:4
刪除線strikeout:8
底層實現方式是採用1個位元組的低四位方式:0000***x
最右邊的位如果是0表示普通文字,如果是1表示粗體
右邊數過來第二位如果是1表示斜體(2的二進位制表示10)
右邊數過來第三位如果是1表示下劃線(4的二進位制表示100)
右邊數過來第四位如果是1表示刪除線(8的二進位制表示1000)
那麼,如果是粗體+斜體,就應該是0000 0011,最後乙個1表示粗體,倒數第二個1表示斜體。
那麼,我要去除斜體,只需將倒數第二個1變成0即可。採用0000 0011b^10b。異或就是相同為0,相異為1。操作後就是0000 0001。
這就是為什麼採用異或操作的原因。
l編輯//剪下
private
void tsbcut_click(object sender, eventargs e) }
//複製
private
void tsbcopy_click(object sender, eventargs e) }
//貼上
private
void tsbpaste_click(object sender, eventargs e)
//撤銷
private
void tsbundo_click(object sender, eventargs e)
//重做
private
void tsbredo_click(object sender, eventargs e)
由於richtextbox已封裝了常見的操作方式,使得我們能很容易地操作這些方法。
l對齊//
左對齊
private
void tsbleft_click(object sender, eventargs e)
//居中對齊
private
void tsbcenter_click(object sender, eventargs e)
//右對齊
private
void tsbright_click(object sender, eventargs e)
l自動換行
//自動換行
private
void tsmiwordwrap_click(object sender, eventargs e)
這句語法可能有人會質疑。聽我解釋:自動換行需要設定兩個內容,1.選單項加乙個打勾獲取去除打勾,然後設定richtextbox的wordwrap屬性。
tsmiwordwrap.checked = !tsmiwordwrap.checked就是設定打勾與否,設定為相反。
rtfcontent.wordwrap = ***;
就是將是否自動換行的屬性賦給控制項。一句話完成兩個操作。
我的記事本 第二講 基本功能的實現
mynotepad 是類似於word的軟體,但沒有word功能那麼強大,比記事本略強。mynotepad 是練習控制項 檔案操作的學習軟體,而不是一款商業目的的產品。軟體的基本功能有字型 字型大小 字型 對齊 編輯等操作,現在讓我們來看看如何實現。l字型 private void tsbfont c...
C實現陣列的基本功能
實現了陣列的基本操作 插入,刪除,逆序,排序等 不足之處,只能在初始化的時候確定陣列的大小,陣列滿時不能動態擴充容量 以後改進 排序演算法可用其它代替冒泡。include include include include 定義陣列型別 定義資料結構體 typedef struct array 顯示陣列...
python實現ftp的基本功能
這篇文章主要介紹了python使用ftplib實現簡易ftp客戶端的方法,例項分析了ftplib模組相關設定與使用技巧,需要的朋友可以參考下 usr bin python coding utf 8 fromftplib importftp 載入ftp模組 ftp ftp 設定變數 ftp.set d...