Прочитать выбранный файл из ComboBox. C#
Есть void ReadFile(string path), А так же есть код, который добавляет txt-файлы в combobox:
string path = Application.StartupPath;
var dir = new DirectoryInfo(path);
var files = new List<string>();
foreach (FileInfo file in dir.GetFiles("*.txt"))
{
files.Add(Path.GetFileName(file.FullName));
}
foreach (string str in files)
{
combobox.Items.Add(str);
}
Как сделать, чтобы выбранный файл в combobox можно было указать как path для ReadFile?
Пробовал так, но ничего не получилось:
ReadFile(Application.StartupPath + "\\" + combobox.SelectedText);
Ответы (2 шт):
Автор решения: Neomaster
→ Ссылка
Шаблон чтения файла, имя которого выбрано в ComboBox.
using System;
using System.Data;
using System.IO;
using System.Linq;
using System.Windows.Forms;
namespace WindowsFormsApp1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
comboBox1.Items.AddRange(Enumerable.Range(0, 10)
.Select(x => $"file_{x}.txt")
.ToArray());
}
private void button1_Click(object sender, EventArgs e)
{
string text = File.ReadAllText(Path.Combine(Application.StartupPath, comboBox1.SelectedItem.ToString()));
MessageBox.Show(text);
}
}
}
Рекомендации
Для формирования путей используйте Path.Combine(). Это очень упрощает жизнь и при разработке кроссплатформенных приложений на базе .Net Core.
Автор решения: Bulson
→ Ссылка
Например так
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
this.Load += Form1_Load;
}
private void Form1_Load(object sender, EventArgs e)
{
string path = Application.StartupPath;
var dir = new DirectoryInfo(path);
//загружаем массив FileInfo в комбобокс
_comboBox.Items.AddRange(dir.GetFiles("*.txt"));
//отображаем в комбобоксе только название файла
_comboBox.DisplayMember = nameof(FileInfo.Name);
//если были загружены txt файлы подписываемся на событие выбора
if (_comboBox.Items.Count > 0)
{
_comboBox.SelectedIndexChanged += ComboBox_SelectedIndexChanged;
}
}
private void ComboBox_SelectedIndexChanged(object sender, EventArgs e)
{
//получаем полный путь к файлу
var file = (_comboBox.SelectedItem as FileInfo).FullName;
//отображаем содержимое файла в RichTextBox
_richTextBox.LoadFile(file, RichTextBoxStreamType.PlainText);
}
}
