说我希望listBox1
包含一组名字。当有人点击其中一个名字时,它会在listBox2
和已选中中显示姓氏。
我似乎无法让第二个列表框已经选中它。
因此,如果选择listBox1
中的第一项,则会选择listBox2
中的第一项。等等。
这怎么可能?
以下是一些代码:
private void materialFlatButton3_Click_1(object sender, EventArgs e)
{
OpenFileDialog OpenFileDialog1 = new OpenFileDialog();
OpenFileDialog1.Multiselect = true;
OpenFileDialog1.Filter = "DLL Files|*.dll";
OpenFileDialog1.Title = "Select a Dll File";
if (OpenFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
// put the selected result in the global variable
fullFileName = new List<String>(OpenFileDialog1.FileNames);
foreach (string s in OpenFileDialog1.FileNames)
{
listBox2.Items.Add(Path.GetFileName(s));
listBox4.Items.Add(s);
}
}
}
private void listBox2_SelectedIndexChanged(object sender, EventArgs e)
{
string text = listBox2.GetItemText(listBox2.SelectedItem);
textBox3.Text = text;
}
在listbox4中,它显示完整路径。在listbox2中,它只显示文件的名称。
当有人点击listbox2中的某个文件时,如何才能这样做,在listbox4中会选择相应的路径?
答案 0 :(得分:1)
创建您自己的类型以存储和显示文件名:
@IBAction func buttonPressed(_ sender: UIButton) {
}
并将这些项目添加到列表框中。这样您就可以存储完整路径并同时显示文件名。
或者只是保留对原始Files数组的引用或将其内容复制到另一个数组。然后通过选定的索引从此数组中获取完整路径,而不是从用于存储内容的第二个列表框中获取。
答案 1 :(得分:1)
创建一个表示完整路径和名称以显示的类
然后使用绑定加载的数据到ListBox
public class MyPath
{
public string FullPath { get; private set; }
public string Name '
{
get { return Path.GetFileName(s) }
}
public MyPath(string path)
{
FullPath = path;
}
}
// Load and bind it to the ListBox
var data = OpenFileDialog1.FileNames
.Select(path => new MyPath(path))
.ToList();
// Name of the property which will be used for displaying text
listBox1.DisplayMember = "Name";
listBox1.DataSource = data;
private void ListBox1_SelectedValueChanged(object sender, EventArgs e)
{
var selectedPath = (MyPath)ListBox1.SelectedItem;
// Both name and full path can be accesses without second listbox
// selectedPath.FullPath
// selectedPath.Name
}