【问题标题】:Create ListBox items from text file with 2 variables使用 2 个变量从文本文件创建 ListBox 项
【发布时间】:2017-03-08 05:02:38
【问题描述】:

所以,我需要任何帮助来填充将显示网站名称的 ListBox,如果单击它,则转到特定的 url。

这是文本文件中的内容:

#first website
http://firstwebsite.com

#second website
http://secondwebsite.com

#third website
http://thirdwebsite.com

我可以读取文件并使用名称填充列表框,但无法使 url 正常工作。

FileOpenPicker picker = new FileOpenPicker();
picker.ViewMode = PickerViewMode.Thumbnail;
picker.SuggestedStartLocation = PickerLocationId.ComputerFolder;
picker.FileTypeFilter.Add(".txt");

StorageFile file = await picker.PickSingleFileAsync();

if (file != null)    {
    var stream = await file.OpenAsync(FileAccessMode.Read);
    using (StreamReader reader = new StreamReader(stream.AsStream()))
            {
                while (!reader.EndOfStream)
                {
                    string line = reader.ReadLine();

                    if (line.StartsWith("#") {
                        listbox.items.Add(line);
                    }

任何帮助都很棒。

谢谢

【问题讨论】:

  • 请贴出你的文本文件阅读和Listbox创建代码
  • @Jonathan Done ;-)
  • 您对输入文本文件有任何控制权吗?如果可能,您应该更强有力地构建文本文件,例如 json 或 xml,以便能够一致地获取数据。实际上,您是说以“#”开头的行是名称,但没有使用任何标记来区分 url。你也许可以使用'http'

标签: c# visual-studio uwp


【解决方案1】:

如果你想在“点击”事件中使用它,我的意思是当你点击项目时,下面的代码可以工作。

  private void listBox1_Click(object sender, EventArgs e)
    {
        string str = ((ListBox)(sender)).Text;
        Process.Start(str);
    }

处理 NULL 条件和异常。

为“进程”添加 System.Diagnostics 命名空间。

【讨论】:

    【解决方案2】:

    我创建了一个非常简单的控制台来测试它。 这是我想出的

        var _listBox1 = new ListBox();
    
        //just adding a url for example
        _listBox1.Items.Add("http://www.google.com");
    
        //here I am just setting the selected value
        _listBox1.SetSelected(0, true);
    
        var selectedUrl = _listBox1.SelectedItem.ToString();
    
        //this will start off the default web browser
        Process.Start(selectedUrl);
    

    所以Process.Start() 可以放在该列表框的任何事件处理程序中。 I.E SelectedIndexChanged 事件

        private void _listBox1_SelectedIndexChanged(object pSender, EventArgs pArgs)
        {
            var selectedUrl = _listBox1.SelectedItem.ToString();
            Process.Start(selectedUrl);
        }
    

    【讨论】:

    • 我认为他要求点击事件
    • @pavanChandaka 我不确定列表框是否已经存在 OnClick 事件。但 SelectedIndexChanged 应该这样做。据此question SelectedIndexChanged 是首选。也许这个msdn 会有所帮助?..
    • 我在下面的答案中添加了点击事件
    • 谢谢,但我想要的是选择文本文件信息 2 到 2 行;第一行是要填充列表框的项目(#first website),第二行是 selectedItem 上的 url。
    • @Rpgccv 嗯,看来你有一个更大的问题需要分解成更小的任务。集中你的问题会很有帮助。老实说,很难想象你想要实现什么。但我可能会创建两个列表框。用网站填充一个,然后用 url 填充另一个。希望有帮助
    猜你喜欢
    • 1970-01-01
    • 2022-08-19
    • 2013-04-17
    • 1970-01-01
    • 2015-01-22
    • 1970-01-01
    • 1970-01-01
    • 2016-09-26
    • 2015-06-13
    相关资源
    最近更新 更多