c # Как заставить пользователя выбрать папку и затем ввести - PullRequest
0 голосов
/ 07 сентября 2018

Я довольно новичок в C #, поэтому я не знаю, как атаковать эту проблему. У меня есть этот код, который генерирует форму, поэтому появляется всплывающее окно и позволяет выбрать папку, которую пользователь хочет выбрать. Проблема в том, что после его выбора он не дает возможности нажать Enter или OK, чтобы остальная часть моего кода могла использовать эту папку в качестве пути для выполнения оставшейся части того, что я хочу сделать.

Это код:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using PdfSharp.Pdf;
using PdfSharp.Pdf.IO;
using System.IO;


namespace FolderBrowserDialogSampleInCSharp
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void BrowseFolderButton_Click(object sender, EventArgs e)
        {
            FolderBrowserDialog folderDlg = new FolderBrowserDialog();
            folderDlg.ShowNewFolderButton = true;
            // Show the FolderBrowserDialog.
            DialogResult result = folderDlg.ShowDialog();
            if (result == DialogResult.OK)
            {
                textBox1.Text = folderDlg.SelectedPath;
                Environment.SpecialFolder root = folderDlg.RootFolder;
                var dir = textBox1.Text;

                File.SetAttributes(dir, FileAttributes.Normal);
                string[] files = Directory.GetFiles(dir, "*.pdf");
                IEnumerable<IGrouping<string, string>> groups = files.GroupBy(n => n.Split('.')[0].Split('_')[0]);

                foreach (var items in groups)
                {
                    Console.WriteLine(items.Key);
                    PdfDocument outputPDFDocument = new PdfDocument();
                    foreach (var pdfFile in items)
                    {
                        Merge(outputPDFDocument, pdfFile);
                    }
                    if (!Directory.Exists(dir + @"\Merge"))
                        Directory.CreateDirectory(dir + @"\Merge");

                    outputPDFDocument.Save(Path.GetDirectoryName(items.Key) + @"\Merge\" + Path.GetFileNameWithoutExtension(items.Key) + ".pdf");
                }
                Console.ReadKey();

            }
        }

        private static void Merge(PdfDocument outputPDFDocument, string pdfFile)
        {
            PdfDocument inputPDFDocument = PdfReader.Open(pdfFile, PdfDocumentOpenMode.Import);
            outputPDFDocument.Version = inputPDFDocument.Version;
            foreach (PdfPage page in inputPDFDocument.Pages)
            {
                outputPDFDocument.AddPage(page);
            }
        }


    }



}

Что генерирует грядущую форму:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;

namespace FolderBrowserDialogSampleInCSharp
{
    static class Program
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }
    }
}

Я предполагаю, что мне нужно либо добавить кнопку в дизайне формы как «ввод» или «ок».

Могу ли я просто иметь это так, чтобы, как только пользователь выбирает папку и нажимает ОК, программа переходит к сохранению этого в качестве выбранного пользователем пути?

1 Ответ

0 голосов
/ 11 сентября 2018

Ответ, который я искал:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using PdfSharp.Pdf;
using PdfSharp.Pdf.IO;
using System.IO;


namespace FolderBrowserDialogSampleInCSharp
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void BrowseFolderButton_Click(object sender, EventArgs e)
        {
            FolderBrowserDialog folderDlg = new FolderBrowserDialog();
            folderDlg.ShowNewFolderButton = true;
            // Show the FolderBrowserDialog.
            DialogResult result = folderDlg.ShowDialog();
            if (result == DialogResult.OK)
            {
                textBox1.Text = folderDlg.SelectedPath;
                Environment.SpecialFolder root = folderDlg.RootFolder;





            var dir = textBox1.Text;

            File.SetAttributes(dir, FileAttributes.Normal);
                string[] files = Directory.GetFiles(dir, "*.pdf");
                IEnumerable<IGrouping<string, string>> groups = files.GroupBy(n => n.Split('.')[0].Split('_')[0]);

                foreach (var items in groups)
                {
                    Console.WriteLine(items.Key);
                    PdfDocument outputPDFDocument = new PdfDocument();
                    foreach (var pdfFile in items)
                    {
                        Merge(outputPDFDocument, pdfFile);
                    }
                    if (!Directory.Exists(dir + @"\Merge"))
                        Directory.CreateDirectory(dir + @"\Merge");

                    outputPDFDocument.Save(Path.GetDirectoryName(items.Key) + @"\Merge\" + Path.GetFileNameWithoutExtension(items.Key) + ".pdf");
                }
                Console.Read();

                Close();
            }

        }
        private static void Merge(PdfDocument outputPDFDocument, string pdfFile)
        {
            PdfDocument inputPDFDocument = PdfReader.Open(pdfFile, PdfDocumentOpenMode.Import);
            outputPDFDocument.Version = inputPDFDocument.Version;
            foreach (PdfPage page in inputPDFDocument.Pages)
            {
                outputPDFDocument.AddPage(page);
            }
        }


    }



}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...