[英]Cannot get selectedItem to textbox
我正在嘗試從一種表單1獲取列表框選定的項目,以顯示在表單2的文本框中。
到目前為止,它部分起作用。
問題在於它僅獲取在應用程序啟動時選擇的selectedItem。 如果用戶選擇一個新項目,它仍然會獲得被選擇為默認項目的項目。
表格1 MainForm
:
public MainForm()
{
public string GetListBoxSelectedItem()
{
if (Animallst.SelectedItem != null) //Animallst is the listbox
{
return Animallst.SelectedItem.ToString();
return string.Empty;
}
}
private void foodbtn_Click(object sender, EventArgs e)
{
FoodRegister foodForm = new FoodRegister();
foodForm.Show();
}
}
表格2 FoodRegister
:
public partial class FoodRegister : Form
{
private RecipeManager m_foodmanager = new RecipeManager();
public FoodRegister()
{
InitializeComponent();
MainForm main = new MainForm();
Nametxt.Text = main.GetListBoxSelectedItem();
//My initializations
InitializeGUI();
}
}
這兩行根本不執行您希望它們執行的操作。 您正在創建MainForm
全新實例,該實例與原始實例無關。 因此, GetListBoxSelectedItem()
也不執行您想要的操作。
MainForm main = new MainForm();
Nametxt.Text = main.GetListBoxSelectedItem();
而是將對原始表單的引用傳遞到第二個表單中:
public FoodRegister(MainForm main)
{
InitializeComponent();
Nametxt.Text = main.GetListBoxSelectedItem();
...
然后這樣稱呼它:
FoodRegister foodForm = new FoodRegister(this);
foodForm.Show();
有兩件事要提到:
行return string.Empty
是多余的。 由於它上面的線,這條線變得無法到達
在您的FoodRegister
中,您將創建主窗體的新實例。 然后,這會擦除主窗體中保存的所有內容,即Animallst.SelectedItem.ToString();
處理此問題的一種簡單方法是將值設置為靜態變量-這樣一來,您無需創建表單的新實例即可訪問它。
主要形式:
public static string GetListBoxSelectedItem()
{
if (Animallst.SelectedItem != null) //Animallst is the listbox
{
return Animallst.SelectedItem.ToString();
}
else { return string.Empty(); }
}
食品注冊:
public FoodRegister()
{
InitializeComponent();
MainForm.GetListBoxSelectedItem();
//My initializations
InitializeGUI();
}
一段時間沒有玩WinForms,但是在Form 2中
public partial class FoodRegister : Form
{
private RecipeManager m_foodmanager = new RecipeManager();
public FoodRegister()
{
InitializeComponent();
//My initializations
InitializeGUI();
}
public void SetText(string txt)
{
Nametxt.Text = txt;
}
}
在表格1中
public MainForm()
{
private readonly FoodRegister foodForm = new FoodRegister();
private void foodbtn_Click(object sender, EventArgs e)
{
foodForm.SetText(Animallst.SelectedItem == null ? "" : Animallst.SelectedItem.ToString());
foodForm.Show();
}
}
我更換了
GetListBoxSelectedItem()
同
Animallst.SelectedItem == null ? "" : Animallst.SelectedItem.ToString()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.