Не удается преобразовать из системы. Windows .Forms.DialogResult в 'String' C# - PullRequest
0 голосов
/ 30 апреля 2020

C# Я использую Visual Studio, использую windows формы и получаю сообщение об ошибке:

Невозможно преобразовать из системы. Windows .Forms.DialogResult To 'String'

Я пытаюсь получить доступ к файлу Minecraft, уже находящемуся на моем компьютере, и хочу переместить файлы в указанную папку c, и я позволяю пользователю выбирать, в какой мир он хочет перенести мод, но когда я использую System.IO.File.Move(datapack,DialogResult); и DialogResult - это переменная, которую я сделал здесь: DialogResult DialogResult = folderBrowserDialog1.ShowDialog();, и компьютер пытается преобразовать DialogResult в строку по какой-то причине и не удается. поэтому я искал решение и нашел, как превратить DialogResult в строку с этой функцией DialogResult.ToString();, но появляется ошибка.

Это мой код: (Моя ошибка в строке 29 System.IO.File.Move(datapack,DialogResult);)

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.VisualBasic;
using System.Windows.Forms;

namespace WindowsFormsApp2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            string username = Interaction.InputBox("You can find your username in C:/Users/Your name", "", "Put User Name In Here");
            string lastD = @"\AppData\Roaming\.minecraft\saves";
            folderBrowserDialog1.SelectedPath = @"c:\users\" + username + lastD;
            DialogResult DialogResult = folderBrowserDialog1.ShowDialog();
            folderBrowserDialog1.ShowNewFolderButton = false;
            string datapack = @"C:\Program Files (x86)\Mr Snout's Datapack Installer\Datapacks\Nether Reactor.zip";
            DialogResult.ToString();
            System.IO.File.Move(datapack,DialogResult);
        }

        private void button2_Click(object sender, EventArgs e)
        {
            panel1.BringToFront();
            panel1.Show();

        }

        private void button3_Click(object sender, EventArgs e)
        {
            panel1.SendToBack();
            panel1.Hide();
        }

        private void vScrollBar1_Scroll(object sender, ScrollEventArgs e)
        {

        }
    }
}

Ответы [ 2 ]

3 голосов
/ 30 апреля 2020

У вас есть путаница в том, что такое DialogResult и какова его цель. Это перечисление DialogResult , используемое для возврата нажатой кнопки, когда используется диалоговое окно, подобное FolderBrowserDialog. Это не имя папки, выбранной пользователем. Этот возвращается свойством SelectedPath.

Таким образом, ваш код после получения результата из диалогового окна должен проверить, нажал ли пользователь ОК, и затем создать имя файла назначения, куда вы хотите переместить исходный код. файл. Это можно сделать, извлекая имя файла из источника и комбинируя его с папкой, выбранной в диалоговом окне.

private void button1_Click(object sender, EventArgs e)
{
    string username = Interaction.InputBox("You can find your username in C:/Users/Your name", "", "Put User Name In Here");
    string lastD = @"\AppData\Roaming\.minecraft\saves";
    folderBrowserDialog1.SelectedPath = @"c:\users\" + username + lastD;
    folderBrowserDialog1.ShowNewFolderButton = false;
    DialogResult result = folderBrowserDialog1.ShowDialog();
    if(result == DialogResult.OK)
    {
        string datapack = @"C:\Program Files (x86)\Mr Snout's Datapack Installer\Datapacks\Nether Reactor.zip";
        string destFile = Path.Combine(folderBrowserDialog1.SelectedPath, Path.GetFilename(datapack));
        System.IO.File.Move(datapack,destFile);
   }
}
0 голосов
/ 30 апреля 2020

DialogResult возвращает не путь, а результат fx. (OK, FAILED) Вместо этого вы используете folderBrowserDialog1, который вы сделали, который возвращает путь, как показано:

System.IO.File.Move(datapack, folderBrowserDialog1.SelectedPath + "datapack.zip");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...