【VB.NET】VB.NET窗体与控件问题的解答
如何同時(shí)改變窗體中控件的Text屬性中顯示文字的大小?
答:在設(shè)計(jì)窗體中,選中窗體,然后通過(guò)屬性窗口對(duì)窗體的Font屬性進(jìn)行設(shè)置,這樣,窗體中控件的Text文本大小都會(huì)隨之發(fā)生變化,而不需要逐個(gè)控件去修改Font屬性。
我在項(xiàng)目中添加了另外一個(gè)窗體,并編寫了一些代碼,但是怎樣才能運(yùn)行后添加的這個(gè)窗體呢?
答:當(dāng)項(xiàng)目中包含了多個(gè)窗體時(shí),為了分別對(duì)每個(gè)窗體進(jìn)行調(diào)試,就需要修改啟動(dòng)窗體,把需要調(diào)試的那個(gè)窗體作為啟動(dòng)窗體。具體的做法是:在“解決方案資源管理器”中選中項(xiàng)目,并單擊右鍵,然后在彈出的菜單中選擇“屬性”選擇,這是就會(huì)打開項(xiàng)目屬性的Tab頁(yè)面,在“應(yīng)用程序”選項(xiàng)卡中,找到“啟動(dòng)窗體”,并根據(jù)需要在下拉列表框中選擇需要啟動(dòng)的窗體。選中后,再次運(yùn)行時(shí),啟動(dòng)窗體就會(huì)改變了。
如何讓窗體在運(yùn)行時(shí)是進(jìn)行全屏顯示?
答:通常情況下,窗體在運(yùn)行后的大小與設(shè)計(jì)時(shí)是保持一致的,但是可以通過(guò)修改窗體的WindowState屬性來(lái)改變窗體顯示的情況。如果要全屏顯示,其實(shí)就是將WindowState屬性設(shè)置為Maximized。
除了重新繪制窗體邊框之外,有沒有更簡(jiǎn)單的方法創(chuàng)建非矩形的窗體?
答:還有一種較為簡(jiǎn)單的方式來(lái)實(shí)現(xiàn)非矩形窗體,這種方式可以通過(guò)三個(gè)屬性的設(shè)置就能實(shí)現(xiàn)。首先我們需要有一張可以作為背景的圖片,這個(gè)圖片上要包含所要顯示窗體的形狀,其他不需要顯示出來(lái)的部分,需要用同一種顏色。例如,要顯示一個(gè)圓形窗體,可以將圓形內(nèi)部設(shè)置為藍(lán)色,而圓形外部都是白色。有了這張圖片后,就可以將它設(shè)置為窗體的BackGroundImage,然后將TransparencyKey屬性設(shè)置為白色,并將FormBorderStyle屬性設(shè)置為None,設(shè)置完畢后,再運(yùn)行窗體,就會(huì)顯示出圓形的窗體了。
TextBox控件和RichTextBox控件有和區(qū)別?
答:二者的區(qū)別主要體現(xiàn)在以下四方面:
首先默認(rèn)情況下TextBox控件只顯示單行的文本,只有將MultiLine屬性設(shè)置為True時(shí),才能顯示多行文本。而RichTextBox控件本身就是進(jìn)行多行顯示的。
其次,二者能容納的字符數(shù)不同,TextBox控件能容納的字符數(shù)少,RichTextBox控件能容納的字符數(shù)多。具體容納的字符數(shù)可以通過(guò)MaxLength屬性查看默認(rèn)值。
第三,RichTextBox控件可使用的方法更多,可以調(diào)用SaveFile方法或LoadFile方法對(duì)RTF類型的文本信息進(jìn)行保存或加載。而TextBox控件沒有這樣的方法。
最后,TextBox控件中文本的字體只能進(jìn)行整體設(shè)置,而RichTextBox控件允許對(duì)部分文本的字體進(jìn)行設(shè)置。
所有的控件都具有鍵盤事件嗎?
答:只有能夠獲得焦點(diǎn)的控件才具有鍵盤事件,其他不能獲得焦點(diǎn)的控件是不能觸發(fā)鍵盤事件的。例如,Label控件就不能獲得焦點(diǎn),所以它就不具有鍵盤事件,而只具有鼠標(biāo)事件。
怎樣實(shí)現(xiàn),在單擊窗體關(guān)閉按鈕時(shí),不會(huì)關(guān)閉窗體?
答:如果要想在單擊窗體關(guān)閉按鈕時(shí),不關(guān)閉窗體就需要對(duì)窗體的FormClosing事件編寫事件處理過(guò)程,在此事件處理過(guò)程中的參數(shù)是System.Windows.Forms.FormClosingEventArgs類型的,它有一個(gè)Cancel屬性,當(dāng)該屬性值為True時(shí),就可以取消該事件的操作。在這里也可以添加一個(gè)消息對(duì)話框,讓用戶進(jìn)行選擇是否需要關(guān)閉,從而增強(qiáng)應(yīng)用程序的用戶體驗(yàn)。
我要在列表框中實(shí)現(xiàn)雙擊一個(gè)條目后,該條目會(huì)從列表框中刪除,并顯示在其他控件中,為什么不能顯示被刪除的條目?
答:出現(xiàn)這個(gè)問(wèn)題的主要原因是編寫代碼時(shí),沒有注意語(yǔ)句的順序,先調(diào)用了列表框的Remove方法將選中的條目刪除,然后再為其他控件的Text屬性賦值造成的。最簡(jiǎn)單的解決辦法就是將為其他控件的賦值語(yǔ)句放在列表框的Remove方法調(diào)用之前。也可以在刪除被選中的條目之前,將該值賦值給一個(gè)變量,然后再將變量值賦給其他控件。
如何在窗體最小化時(shí)只顯示在系統(tǒng)任務(wù)欄的托盤區(qū)中?
答:為了實(shí)現(xiàn)這個(gè)功能,需要在窗體中添加NotifyIcon控件,并為其設(shè)置Icon屬性,即選擇要顯示的.ico圖標(biāo),并設(shè)置Text屬性,以便鼠標(biāo)停留在圖標(biāo)上時(shí)顯示相關(guān)提示信息。如果想要實(shí)現(xiàn)在窗體加載時(shí)就顯示在托盤區(qū)中,就可以在窗體的Load事件中添加Me.Hide()語(yǔ)句 ,并將NotifyIcon控件對(duì)象的Visible屬性設(shè)置為True。為了在雙擊該圖標(biāo)后顯示窗體就需要在NotifyIcon控件對(duì)象的DoubleClick事件處理過(guò)程中將NotifyIcon控件對(duì)象的Visible屬性設(shè)置為False,和Me.Show()語(yǔ)句。
如何知道控件的默認(rèn)事件是什么呢?
答:要想知道控件的默認(rèn)事件非常簡(jiǎn)單,只需要在窗體設(shè)計(jì)界面雙擊選定的控件,就會(huì)在代碼編輯器中添加該控件對(duì)象的默認(rèn)事件框架。
如果從界面中刪去某個(gè)控件,與此控件相關(guān)的默認(rèn)事件處理過(guò)程會(huì)不會(huì)也自動(dòng)刪除?
答:不能。雖然創(chuàng)建控件對(duì)象的默認(rèn)事件處理過(guò)程時(shí),可以通過(guò)在控件上雙擊來(lái)添加事件處理過(guò)程與事件源的關(guān)聯(lián)框架代碼,但是這個(gè)過(guò)程是不可逆的,它不會(huì)隨著控件的刪除而刪除,必須手動(dòng)進(jìn)行刪除或者將其變?yōu)樽⑨?#xff0c;否則,很容易引發(fā)錯(cuò)誤。
為什么我對(duì)OpenFileDialog對(duì)話框已經(jīng)通過(guò)代碼進(jìn)行了屬性設(shè)置,為什么顯示的時(shí)候沒有變化呢?
答:發(fā)生這樣問(wèn)題的主要原因是對(duì)OpenFileDialog對(duì)話框?qū)ο蟮膶傩栽O(shè)置語(yǔ)句放在了ShowDialog方法的后面了。只要將所有的屬性設(shè)置語(yǔ)句前移到ShowDialog方法之前,就可以進(jìn)行正常顯示了。
KeyDown事件與KeyPress事件有什么區(qū)別?
答:首先,KeyDown事件和KeyPress事件的觸發(fā)順序和次數(shù)不同。KeyDown事件在某個(gè)鍵被按下時(shí),只會(huì)觸發(fā)一次,而且是先于KeyPress事件被觸發(fā);KeyPress事件會(huì)在KeyDown事件之后被觸發(fā),而且只要長(zhǎng)時(shí)間按住一個(gè)鍵,就會(huì)被多次觸發(fā)。其次,二者能夠接收的鍵值不同。KeyDown事件可以接收任何一個(gè)鍵盤按鍵的值,而KeyPress事件只能接收具有ASCII碼值的按鍵值。
如果要實(shí)現(xiàn)在一個(gè)控件處于選中狀態(tài)時(shí)能夠?qū)Α盎剀嚒庇许憫?yīng),應(yīng)該編寫哪個(gè)事件過(guò)程?
答:如果要響應(yīng)“回車”,最好的方式是編寫該對(duì)象的KeyDown事件。在事件處理過(guò)成的框架下對(duì)System.Windows.Forms.KeyEventArgs類型的參數(shù)e的KeyCode屬性進(jìn)行判斷是否等于Keys.Enter。如果滿足條件再進(jìn)行進(jìn)一步處理。
如何動(dòng)態(tài)的向窗體中添加控件?
答:向窗體中動(dòng)態(tài)添加控件的過(guò)程大致分為以下幾步,下面以動(dòng)態(tài)添加Button控件為例進(jìn)行說(shuō)明。添加的Button對(duì)象名為MyButton。
(1)聲明并實(shí)例化所需類型的控件對(duì)象。
Dim MyButton As New Button
(2)對(duì)該控件對(duì)象進(jìn)行屬性設(shè)置,特別是顯示的位置和大小??梢允褂肧etBounds方法直接完成大小和位置的設(shè)置。并添加到窗體控件集合中。
Sub NewButton()
MyButton.SetBounds(100, 100, 50, 50)
MyButton.Text = “MyButton”
Me.Controls.Add(MyButton)
End Sub
(3)在需要顯示控件的過(guò)程中,調(diào)用對(duì)控件的設(shè)置,并編寫需要的事件處理過(guò)程,并與事件源進(jìn)行關(guān)聯(lián)。
NewButton()
AddHandler MyButton.Click, AddressOf MyButton_Click
MyButton_Click過(guò)程的代碼如下:
Private Sub MyButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
MessageBox.Show(“My Button”)
End Sub
在這里需要說(shuō)明的就是在聲明對(duì)象變量是也可以添加WithEvents關(guān)鍵字來(lái)聲明,這時(shí)需要注意的是不能在第三步使用AddHandler和AddressOf語(yǔ)句將事件處理過(guò)程與事件源進(jìn)行關(guān)聯(lián),而要采用Handles子句進(jìn)行關(guān)聯(lián),或者通過(guò)代碼編輯器上方的兩個(gè)下拉列表框進(jìn)行選擇,自動(dòng)建立這個(gè)關(guān)聯(lián)的框架。
總結(jié)
以上是生活随笔為你收集整理的【VB.NET】VB.NET窗体与控件问题的解答的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【Java】蒙提霍尔问题的概率原理及随机
- 下一篇: 【Python】Numpy包的安装使用