Можно ли открывать файлы напрямую через ListBox?

366
17 октября 2017, 00:21

Можно ли открывать файлы напрямую через ListBox? Нужно например: если нажать в ListBox вторую строку и тогда, чтоб открылся в программе файл "Scene2" без вызова диалогового окна. И тотже пример, если нажать в ListBox десятую строку и чтоб открылся файл "Scene10" по определенному пути.

Код кнопки "Open", который открывает файлы через диалоговое окно вот так выглядит:

private void buttonOpenFile_Click(object sender, EventArgs e)
    {
        var ofd = new OpenFileDialog();
        ofd.Title = "Open only NAMEMENU.MNU";
        ofd.Filter = "All files|*.*";
        if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
        {
            filename = ofd.FileName;
            buttonSave.Enabled = true;
            buf = File.ReadAllBytes(ofd.FileName);
            foreach (UserControlHeros item in HeroPanel.Controls)
            {
                if (item.selected)
                {
                    userControlHeros_Click(item, null);
                    break;
                }
            }
        }
    }

Нужно также открывать файл как в коде выше, только без диалогового окна, через ListBox.

Answer 1
private void buttonOpenFile_Click(object sender, EventArgs e)
    {
        try
        {
            string filepath = "Scene" + listBox1.SelectedIndex.ToString(); // Где listBox1 имя вашего listBox
            buf = File.ReadAllBytes(ofd.FileName);
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }
Answer 2

Замените получение имени файла из диалогового окна на его взятие из выбранного в данный момент элемента ListBox.

Answer 3

По методу выше от Иван Стоцкий. Подходящий ответ такой:

private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
    {
        try
        {
            string filepath = "scene" + (listBox1.SelectedIndex + 1).ToString();
            filename = filepath;
            labelFileSaved.Text = Path.GetFileName(filepath);
            buf = File.ReadAllBytes(filepath);
            foreach (UserControlHeros item in HeroPanel.Controls)
            {
                if (item.selected)
                {
                    userControlHeros_Click(item, null);
                    break;
                }
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }
READ ALSO
Операция MEX, не укладываюсь в 3 секунды - C# [требует правки]

Операция MEX, не укладываюсь в 3 секунды - C# [требует правки]

Операция MEX, не укладываюсь в 3 секунды - C#

211
Программное управление Tor в Windows

Программное управление Tor в Windows

Ищу способ сменить выходную ноду тора программно из c#Ну и было бы здорово узнать как указать определенные страны выходной ноды программно,...

235