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