Я пробовал этот код, чтобы открыть диалоговое окно файла в нужное место, и есть только один xml файл, который нужно выбрать (где мне нужно выбрать его и щелкнуть по открытому) вместо выбора файла и нажать "Открыть", чтобы обработать файл есть ли способ отключить открытую кнопку в диалоговом окне открытия файла. Здесь мой xml файл меняется каждый день. Я дал *.xml, но дал мне ошибку. Нелегальные символы в пути.. мой формат файла - это.
lborough vehicles_in 2014-06-05.xml == Это изменяется каждый день в соответствии с датой.
Не нажимая кнопку "открыть", как выбрать файл.
OpenFileDialog dialog = new OpenFileDialog();
dialog.Filter = "XML Files (*.xml)|*.xml";
string initPath = Path.GetFullPath("C:/Users/IT-Administrator/Desktop/LUVS/");
dialog.InitialDirectory = Path.GetFullPath(initPath);
tblVehicles = new DataTable();
dv = new DataView(tblVehicles);
if (dialog.ShowDialog() == DialogResult.OK)
{
if (dialog.FileName.Length > 0)
{
//Load Schema and Vehicle_In XML file
tblVehicles.ReadXmlSchema(Path.Combine(applicationFolder, "vehicles_in.xsd"));
tblVehicles.ReadXml(dialog.FileName);
this.dataGridView1.DataSource = tblVehicles;
this.dataGridView1.AllowUserToAddRows = false;
this.dataGridView1.ReadOnly = true;
**Обновить**
Я пробовал это, вы можете сказать мне, как открыть файл из файлов Directory.get во время выполнения
string[] filePaths = Directory.GetFiles(@"C:\Users\IT-Administrator\Desktop\LUVS/", "*.xml", SearchOption.AllDirectories);
FileStream stream = File.Open(@"C:\Users\IT-Administrator\Desktop\LUVS*.xml",
FileMode.Open);
tblVehicles = new DataTable();
dv = new DataView(tblVehicles);
tblVehicles.ReadXmlSchema(Path.Combine(applicationFolder, "vehicles_in.xsd"));
tblVehicles.ReadXml(stream);
Ваше решение в конце концов не совсем понято:
/* Gives you an array of file names */
string[] filePaths = Directory.GetFiles(@"C:\Users\IT-Administrator\Desktop\LUVS/", "*.xml", SearchOption.AllDirectories);
FileStream stream = File.Open(@"C:\Users\IT-Administrator\Desktop\LUVS*.xml",
FileMode.Open);
Вы не используете массив, а вместо этого просто пытаетесь открыть шаблон подстановки; Вы не можете этого сделать. File.Open
принимает только один путь к файлу.
Вместо этого попробуйте еще что-нибудь подобное:
/* Gives you an array of file names */
string[] filePaths = Directory.GetFiles(@"C:\Users\IT-Administrator\Desktop\LUVS/", "*.xml", SearchOption.AllDirectories);
// Work with each file individually
foreach(var filePath in filePaths)
{
using(FileStream stream = File.Open(filePath, FileMode.Open))
{
tblVehicles = new DataTable();
dv = new DataView(tblVehicles);
tblVehicles.ReadXmlSchema(Path.Combine(applicationFolder, "vehicles_in.xsd"));
tblVehicles.ReadXml(stream);
// Do whatever you need to do with the data from this one file, then move on....
{
}
Есть ли причина, по которой вы не можете использовать Directory.GetFiles, чтобы получить все файлы в каталоге и использовать File.Open для получения файла? Почему вы хотите сделать это с помощью FileDialog, если вы не хотите FileDialog?
Обновить:
//Load Schema and Vehicle_In XML file
tblVehicles.ReadXmlSchema(Path.Combine(applicationFolder, "vehicles_in.xsd"));
// Get all XML files from the files directory
string[] filePaths = Directory.GetFiles(@"files\", "*.xml", SearchOption.AllDirectories);
// Read the first XML file in the files directory
tblVehicles.ReadXml(filePaths[0]);
Это то, о чем вы просили?
Поскольку вы хотите выбрать свой файл и работать с ним сразу, вам нужно поведение кнопки. Лучше всего сделать свой собственный UserControl, показывая файлы, существующие в вашем каталоге. 1. Получить файлы из каталога. 2. Показать диалог с кнопками, каждая кнопка связана с его файлом. 3. Нажмите кнопку "ОК", закройте диалоговое окно и передайте файл вашему методу.
Вы можете использовать SendKeys()
но это неуклюже, и если пользователь перемещает фокус в другом месте, вы можете в конечном итоге отправить нажатия клавиш в неправильное окно.
openFileDialog
не очень настраиваемый, поэтому вам может openFolderDialog
использовать openFolderDialog
и добавить известное имя файла в выбранный пользователем каталог.