автоматизировать процесс openFileDialog в c #

1

Я пробовал этот код, чтобы открыть диалоговое окно файла в нужное место, и есть только один 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);
Теги:

4 ответа

1
Лучший ответ

Ваше решение в конце концов не совсем понято:

/* 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....
     {
}
  • 0
    Спасибо, Андрей. это сделало работу для меня ..
2

Есть ли причина, по которой вы не можете использовать 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]);

Это то, о чем вы просили?

  • 1
    Хороший вопрос, но «Это было опубликовано в качестве ответа, но оно не пытается ответить на вопрос. Возможно, это должен быть комментарий».
  • 0
    Как можно выбрать XML-файл во время выполнения, так как в каталоге будет только один файл
Показать ещё 1 комментарий
0

Поскольку вы хотите выбрать свой файл и работать с ним сразу, вам нужно поведение кнопки. Лучше всего сделать свой собственный UserControl, показывая файлы, существующие в вашем каталоге. 1. Получить файлы из каталога. 2. Показать диалог с кнопками, каждая кнопка связана с его файлом. 3. Нажмите кнопку "ОК", закройте диалоговое окно и передайте файл вашему методу.

0

Вы можете использовать SendKeys() но это неуклюже, и если пользователь перемещает фокус в другом месте, вы можете в конечном итоге отправить нажатия клавиш в неправильное окно.

openFileDialog не очень настраиваемый, поэтому вам может openFolderDialog использовать openFolderDialog и добавить известное имя файла в выбранный пользователем каталог.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню