2017-10-09 56 views
-1

我環顧四周,看到一些與java相關的內容,但對於C#/ WPF沒有任何意義。我想要做的就是這些問題所說的。例如,如果選中「Microsoft」,我希望Combobox出現在第二個面板中,以便他們可以選擇「Windows」,「Xbox」或您有什麼。希望這個問題有道理。我做了一些Google搜索,但在編程方面我仍然很新,所以我可能只是缺少一些基本的東西。我想這當填充複選框時顯示組合框出現

private void Microsoft_CheckStateChanged(object sender, EventArgs e) 
    { 
     comboBox_Copy.isEnabled = (Microsoft.CheckState == 
    CheckState.Checked); 
    } 

但它說CheckState不會在目前的情況下存在,以及「組合框不具備啓用定義」

感謝您的幫助!

回答

1

編輯:請參考下面的代碼,我相信會更接近你的方法,並應該解決你的問題..我相信你的問題在於兩個不同的部分。您正在嘗試在可見性變量的位置使用isEnabled變量,我認爲它更適合該任務。你也試圖在兩種不同的變量類型之間使用等效運算符(等於),因爲從勾號或未勾選的框輸出的結果不是布爾輸出,至少不是我見過的WPF。

private void Microsoft_CheckStateChanged(object sender, EventArgs e) 
{ 
    var resultFromCheckBox = sender as CheckBox; // This line acts as a link between the check box (i.e. Microsoft) and this function so you can use resultFromCheckBox instead of Microsoft.  

    if (resultFromCheckBox.CheckState == CheckState.Checked) 
    { 
     comboBox_Copy.Visibility = System.Windows.Visibility.Visible; // Sets box to visible if checkbox is selected 
    } 
    else 
    { 
     comboBox_Copy.Visibility = System.Windows.Visibility.Hidden; // Sets to hidden in all other cases i.e. when it is not selected. 
    } 
} 

以前的答案:

你已經證明至少在Windows窗體中的代碼,我確信它是在WPF類似,將使控制變得活躍(可與之交互) 。可見性變量可能更有用。

我相信你正在尋找的代碼是沿着以下線的東西:

private void Microsoft_CheckStateChanged(object sender, EventArgs e) 
{ 
    if (comboBox_Copy.Visibility != System.Windows.Visibility.Visible) 
    { 
     comboBox_Copy.Visibility = System.Windows.Visibility.Visible; 
    } 
    else 
    { 
     comboBox_Copy.Visibility = System.Windows.Visibility.Hidden; 
    } 
} 

的visability屬性顯示或隱藏有問題的盒子。我只是根據盒子是否可見或不在首位進行了替換。您可以交替使用事件參數來檢查是否選中了複選框並以此方式進行響應。

希望它有幫助。