按钮链接到组合框打开文件资源管理器



我有一个非常基本的程序来导航到网络文件,但是,我想根据用户选择的文件夹导航到某些文件夹。

我有组合框1 -县(下拉框包括英国,爱尔兰,西班牙,美国,印度)根据组合1的选择生成组合框2(如果选择英国,则可以选择伦敦、曼彻斯特或利物浦,如果选择美国,则用户可以选择纽约或旧金山等)。

当用户选择办公室(例如伦敦)时,我希望文件资源管理器在伦敦文件共享处打开,或者如果他们选择纽约,它将在纽约文件共享处打开。

目前我已经硬编码导航到正确的网络文件夹,但我不确定如何根据用户选择将其更改为导航到正确的网络文件。

private void btnNavigateToFolder_Click(object sender, EventArgs e)
{          
System.Diagnostics.Process.Start("explorer.exe", "\\London.xxx\Finance");


}

这些是我希望导航到的网络文件夹名称的一些示例,具体取决于用户为combo 2选择的名称。纽约- \NewYork.xxxFinance利物浦——金融 Liverpool.xxx

首先,定义一个类来管理每个ComboBox项。必须使用带有Text的类在组合框中显示您希望对每个项目可用的所有其他信息。例如:

public class ComboBoxItem
{
public ComboBoxItem()
{
}
public ComboBoxItem(string text, string path)
{
this.Text = text;
this.Path = path;
}

public string Text { get; set; }
public string Path { get; set; }
public override string ToString()
{
return this.Text;
}
}

你可以定义ComboBoxCityItem和ComboBoxOfficeItem,如果他们有不同的信息,但对于你的情况,我认为我们只需要路径部分。

使用先前的类向ComboBox添加项。你有3个组合框,但只使用城市和办公室来制作路径(如果我没有错的话)。所以:

this.cityComboBox.Items.Add(new ComboBoxItem("London", "London.xxx"));
this.officeComboBox.Items.Add(new ComboBoxItem("Finance", "Finance"));

ToString方法中返回的文本是ComboBox文本。

现在,你可以在组合框中创建路径来获取选中的项目:

private void btnNavigateToFolder_Click(object sender, EventArgs e)
{
var city = this.cityComboBox.SelectedItem as ComboBoxItem;
var office = this.officeComboBox.SelectedItem as ComboBoxItem;
if (city != null && office != null)
{
var path = $"\\{city.Path}\{office.Path}";
System.Diagnostics.Process.Start("explorer.exe", path);
}
}

知道你要开始了,我可以更详细地解释一下。

组合框是一个包含对象的控件,任何类型的对象。您可以在组合框中插入字符串(是一个对象),也可以插入更复杂的类,如ComboBoxItem。组合框只显示每个项目的字符串:如果您插入ComboBoxItem实例,组合框调用ToString方法来获取要在控件中显示的文本。

当您处理项目(Items,SelectedItem…)时,您知道这些对象是ComboBoxItem实例。所以你可以对你的类进行强制转换。

您可以从设计器向组合框添加项,但这些项是字符串,而不是ComboBoxItem对象。如果您查看YourForm.designer.cs文件,您可以看到设计器是如何添加项的。只需用项目调用AddAddRange即可。但是你想使用自己的类(ComboBoxItem),所以你不能使用设计器。您可以在表单的任何方法中调用comboBox.Items.Add(...)。如果您现在正在填充设计器,则可以在构造函数中使用ComboBoxItem。请记住删除设计器中的项目,否则您将有一些项目作为字符串,其他项目作为ComboBoxItem

相关内容

最新更新