簡體   English   中英

SelectedIndex 在 void/static void function 中返回 -1

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM