0

下面是我已经使用了大约两个星期的代码,我认为我一直在工作,直到我输入最后一个信息(MyClient 类),现在我在 Process.Start(url); 说找不到指定的文件。我尝试将其设置为“iexplorer.exe”以使其为 URL 加载 IE,但没有任何变化。

public partial class Form1 : Form
{
    List<MyClient> clients;
    public Form1()
    {
        InitializeComponent();
        clients = new List<MyClient>();
        clients.Add(new MyClient { ClientName = "Client 1", UrlAddress = @"http://www.google.com" });
        BindBigClientsList();
    }

    private void BindBigClientsList()
    {
        BigClientsList.DataSource = clients;
        BigClientsList.DisplayMember = "ClientName";
        BigClientsList.ValueMember = "UrlAddress";
    }

    private void BigClientsList_SelectedIndexChanged(object sender, EventArgs e)
    {
        MyClient c = BigClientsList.SelectedItem as MyClient;
        if (c != null)
        {
            string url = c.ClientName;
            Process.Start("iexplorer.exe",url);
        }
    }
}
class MyClient
{
    public string ClientName { get; set; }
    public string UrlAddress { get; set; }
}

}

4

1 回答 1

2

您使用的ClientName是 URL,这是不正确的...

string url = c.ClientName;

...应该...

string url = c.UrlAddress;

你也不应该指定iexplorer.exe。默认情况下,操作系统使用默认 Web 浏览器打开 URL。除非您真的需要您的用户使用 Internet Explorer,否则我建议让系统为您选择浏览器。

更新
响应OP的评论...

这取决于您所说的“空白”是什么意思。如果你的意思是null,不,这是不可能的。当您尝试调用时,将null其用作列表中的第一个条目将导致 NullReferenceException c.UrlAddress。您也许可以使用MyClient具有虚拟值的占位符实例...

clients = new List<MyClient>();
clients.Add(new MyClient { ClientName = "", UrlAddress = null });
clients.Add(new MyClient { ClientName = "Client 1", UrlAddress = @"http://www.google.com" });

但是,您将不得不将您的操作方法更改为这样的...

private void BigClientsList_SelectedIndexChanged(object sender, EventArgs e)
{
    MyClient c = BigClientsList.SelectedItem as MyClient;
    if (c != null && !String.IsNullOrWhiteSpace(c.UrlAddress))
    {
        string url = c.ClientName;
        Process.Start("iexplorer.exe",url);
    }
    else
    {
        // do something different if they select a list item without a Client instance or URL
    }
}
于 2012-09-17T19:32:59.857 回答