[英]SelectedIndex returns -1 in void/static void function
我對 combobox.SelectedIndex function 有問題。問題是在 void 和 static void 中它只返回 -1。 現在,在任何人來之前,如果里面有任何東西,是的,我已經調試了代碼,發現它只在 static void 和 void 中返回一個 -1,現在我很好奇為什么它沒有'工作,其實很簡單的代碼。
void writecombo()
{
int CURRENT_LOG = combo.SelectedIndex; //< -1
Globals.LG[CURRENT_LOG] += "Hello!" + Environment.NewLine; //Crash, because it is -1
...
}
它在哪里工作:
private void textbox1_KeyDown(object sender, KeyEventArgs e)
{
if (GetAsyncKeyState(Keys.Enter) < 0)
{
int CURRENT_LOG = combo.SelectedIndex; // Not Null
Globals.LG[CURRENT_LOG] += "Hello!" + Environment.NewLine;
...
}
}
我很樂意獲得幫助,如果有人可以向我解釋為什么會這樣:)
編輯:只有當我想從 static void 訪問這個 void 時,問題才會出現,我想用它來訪問 static 中 form1 中的對象。(var from = new Form1) MRE
void
vs static void
不完全是你的問題。 這是一個static
成員,它試圖訪問其 class 的非靜態成員。無法跨越該障礙。
當一個成員是static
時,它只有一個實例,它附加到class
; 它只能訪問 class 的成員,這些成員也標有static
關鍵字。
未標注static
的會員可以訪問class的所有會員,包括其static
會員。 您使用new
從 class 創建的每個 object 基本上都會獲得自己的非靜態成員副本。
在您的代碼示例中,您試圖從static
成員訪問非靜態成員,而運行時告訴您這是不可能的。
首先,感謝所有試圖幫助我的人。 似乎訪問/調用 static function,訪問 Form1 內容是一件復雜而困難的事情。
所以,我找到了另一種方法,而不是嘗試調用一個 function,我將使用一個定時器來檢查一個全局的 boolean 值,如果它是真的,它應該執行代碼,很簡單,它不好,但至少是一個處理它的方法。
盡管如此,如果有人找到了一種很好且簡單的方法來訪問其中包含 static function 的表單的內容,我仍然願意尋求答案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.