2015-01-20 27 views
0

我似乎無法讓Visual Studio 2010在窗體顯示在屏幕上之前設置下拉列表的SelectedItem或SelectedIndex屬性。如果我等到表單可以看到,我可以毫無疑問地設置這些,所以我不確定問題出在哪裏。這是我的代碼。爲什麼我不能在表單顯示之前在VB.net中設置下拉列表的選擇?

Private Sub Test_Program_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
    For each item in System.IO.Directory.GetFiles(Application.StartupPath + "\Pictures\") 
     dd_pics.items.add(item) 
    Next 
    dd_pics.SelectedIndex = 0 
    background = dd_pics.SelectedIndex 
End Sub 

background是一個整型變量。我試圖將SelectedIndex更改爲SelectedItem,並將背景變量類型更改爲字符串,但這沒有幫助。在後面的代碼中,我使用背景變量來設置基於它從上面的代碼引用的文件的圖片。我沒有收到錯誤,但似乎Visual Studio正在跳過dd_pics.SelectedIndex = 0和Sub中的所有順序行。我發現了這一點,因爲當我試圖將這裏引用的圖片設置爲PictureBox並且調試器告訴我在我試圖設置PictureBox的變量中沒有任何內容時,我確實發生了錯誤。我可以在按鈕中使用完全相同的代碼,並且它工作正常。唯一的區別是我可以找到的是,窗體是完全加載,我必須點擊按鈕,它在這裏是自動的。任何人至少可以告訴我什麼時候Visual Studio有這個問題,或者可能如何解決它?任何幫助是極大的讚賞。提前致謝。

+0

嘗試更改以下兩個事件之一中的SelectedIndex值:https://msdn.microsoft.com/en-us/library/system.windows.forms.form.activated(v=vs.110) .aspx或https://msdn.microsoft.com/en-us/library/system.windows.forms.form.shown(v=vs.110).aspx – 2015-01-20 22:17:59

+0

@Visual Vincent - 不幸的是,那些沒有幫助。當我添加'Me.Activate()'行時,沒有什麼改變。我在表格的開頭嘗試了它,並在'dd_pics.SelectedIndex = 0'行之前。我也嘗試調用Sub,它給了我'Me.Shown'的問題,但是這也沒有改變任何東西。我確實發現了一些新的信息。而不是跳過其餘的行,現在它重複'dd_pics'行所在的函數。不知道爲什麼,但是如果我註釋掉'dd_pics'行,它會一直運行。 – ZeverMX 2015-01-20 22:34:25

+0

什麼是'dd_pics',一個CBO?這不是真正的代碼,所以你可以設置一個斷點並觀察會發生什麼。如果在FormLoad或Sub New中引發異常,則不報告它們。也許把它設置爲AnyCpu並運行它看到 – Plutonix 2015-01-20 22:49:03

回答

0

我平時在構造函數中做這些:

Public Sub New() 

    ' This call is required by the designer. 
    InitializeComponent() 

    ' Add any initialization after the InitializeComponent() call. 
    For each item in System.IO.Directory.GetFiles(Application.StartupPath + "\Pictures\") 
    dd_pics.items.add(item) 
    Next 
    dd_pics.SelectedIndex = 0 
    background = dd_pics.SelectedIndex 
End Sub 

莫非這部作品在您的情況?

+0

我從來沒有在VB中使用過構造函數。我一直讓Visual Studio處理它。我應該把這個放在哪裏? – ZeverMX 2015-01-21 00:37:59

+0

你可以在你的課程的任何地方包含一個構造函數方法。要讓Visual Studio爲您輸入,請左鍵單擊以選擇類名,然後在導航欄的「方法名稱」下拉列表中選擇「新建」。不過,你可以放心地忽略我的答案。你的問題在別的地方;如果它在Form_Load中失敗,它也會在構造函數中失敗。你真的應該編輯你的問題來包括整個班級,所以我們可以看到發生了什麼。你要求我們以其他方式盲目飛行。 – InteXX 2015-01-21 03:21:12

相關問題