在我的 VS 2022 社區版 WindowsForms 專案中:我有一個帶有 SelectedValueChange 事件的組合框,但仍然出現錯誤:
System.NullReferenceException:物件未設定為物件的實體。
編碼:
private void cmbChooseTask_SelectedValueChanged(object sender, EventArgs e)
{
if (cmbChooseTask.SelectedValue.ToString() == "Install non clusterd instance")
{
Form frm = new NonClusterdInstallation();
frm.Show();
}
}
組合框初始化是:
cmbChooseTask.DataSource = new BindingSource(Dictionaries.DictTypeOfTask, null);
cmbChooseTask.DisplayMember = "Value";
cmbChooseTask.ValueMember = "Value";
cmbChooseTask.SelectedItem = null;
字典定義是:
public static SortedDictionary<int, string> DictTypeOfTask = new SortedDictionary<int, string>()
{
{ 1,"Install non clusterd instance" },
{ 2,"Install clusterd instance"},
{ 3, "Set up pre-installed cluster instance" },
{ 4, "Migration" },
{ 5, "Change Collation" },
{ 6, "Add instance to cluster" },
{ 7, "Display all" }
};
uj5u.com熱心網友回復:
NRE 的快速解決方案是:
if (String.Equals(cmbChooseTask.SelectedValue?.ToString(), "Install non
clusterd instance"))
要不就
if (cmbChooseTask.SelectedValue?.ToString() == "Install non
clusterd instance")
uj5u.com熱心網友回復:
ToString如果它已經是一個,為什么還要打電話string?只需將其轉換為 type string,這也將成功null:
if ((string)cmbChooseTask.SelectedValue == "Install non clusterd instance")
另外,根據您要與之比較的文本,我猜您實際上關心控制元件中顯示的文本,該文本通過Text已經是 type 的屬性公開string:
if (cmbChooseTask.Text == "Install non clusterd instance")
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/465199.html
