[英]How Do I Display a Name from a ListBox onto a TextBox in C#?
我正在嘗試將我選擇的狗的名字顯示到 C# 中的 WPF 應用程序的文本框中。 這是我到目前為止的代碼:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.IO;
namespace DogAdoption_Form
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
const string DISPLAY_NAME = "Name will display here...";
public MainWindow()
{
InitializeComponent();
//DisplayLstBoxDogNames();
}
public void DisplayLstBoxDogNames()
{
lstBoxDogNames.Items.Add("Chloe");
lstBoxDogNames.Items.Add("Daisy");
lstBoxDogNames.Items.Add("Emmett");
lstBoxDogNames.Items.Add("Jack");
lstBoxDogNames.Items.Add("Lucy");
lstBoxDogNames.Items.Add("Nala");
lstBoxDogNames.Items.Add("Peach");
lstBoxDogNames.Items.Add("Rocky");
lstBoxDogNames.Items.Add("Shiloh");
lstBoxDogNames.Items.Add("Toby");
foreach (string dogName in lstBoxDogNames.Items)
{
if (txtBoxName.Text == DISPLAY_NAME)
{
//txtBoxName.Text.Replace(DISPLAY_NAME, dogName);
txtBoxName.Text = dogName;
txtBoxName.Foreground = Brushes.Black;
}
else if ((txtBoxName.Text != DISPLAY_NAME) || (txtBoxName.Text == ""))
{
//txtBoxName.Text.Replace(txtBoxName.Text, dogName);
txtBoxName.Text = dogName;
txtBoxName.Foreground = Brushes.Black;
}
}
}
private void txtBoxName_GotFocus(object sender, RoutedEventArgs e)
{
DisplayLstBoxDogNames();
}
private void txtBoxName_LostFocus(object sender, RoutedEventArgs e)
{
if (txtBoxName.Text == DISPLAY_NAME)
{
txtBoxName.Foreground = Brushes.Gray;
}
else if (txtBoxName.Text != DISPLAY_NAME)
{
txtBoxName.Foreground = Brushes.Gray;
}
}
}
}
想法是,當我將焦點放在文本框上時,文本框的字體將從灰色變為黑色,文本框內的內容將從“名稱將在此處顯示...”切換為從列表框。 目前,window 僅顯示列表框的最后一個元素 Toby。 注釋掉的代碼是我嘗試用列表框中的選定項目替換 DISPLAY_NAME,但它不起作用。 我試過使用 lstBoxDogNames.SelectedItems.ToString();,但這也沒有用。
您使用lstBoxDogNames.SelectedItem.ToString()
的方法實際上並沒有那么糟糕。 但如果你調試,你會看到返回的字符串不僅包含正在顯示的內容,還包含附加信息。
相反,試試這個:
string[] tmp = this.lstBoxDogNames.SelectedItem.ToString().Split(' ');
txtBoxName.Text = tmp[tmp.Length - 1];
tmp
會將所選項目中由空格分隔的所有元素轉換為字符串。 由於這些元素中的最后一個是實際內容,因此它包含選定的名稱。
如果您不明白或有什么需要澄清的,請隨時提出問題。
我找到了解決方案。 這很簡單。 我所要做的就是將DisplayLstBoxDogNames()
中的代碼放在 Listbox 的 SelectionChanged 事件下。 謝謝大家的幫助!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.