FileSystemWatcher не принимает переменную string.
Цитата: Mihail от 28.09.2022, 23:19Всем доброго времени суток.
Я столкнулся с проблемой FileSystemWatcher не принимает переменную string, если метод вызывается в FormLoad после инициализации компонентов.
Но если написать "@"D:\Projekt"" то работает.
Так же работает если метод использовать в событии например нажатие кнопки.private void Form1_Load(object sender, EventArgs e) { FileSystemWatcher AbdWatcher = new FileSystemWatcher(AbdPath, "*.pdf"); AbdWatcher.SynchronizingObject = this; AbdWatcher.EnableRaisingEvents = true; AbdWatcher.Created += new FileSystemEventHandler(Abd_Watcher_Created); AbdWatcher.Deleted += new FileSystemEventHandler(Abd_Watcher_Deleted); AbdWatcher.Renamed += new RenamedEventHandler(Abd_Watcher_Renamed); }
Всем доброго времени суток.
Я столкнулся с проблемой FileSystemWatcher не принимает переменную string, если метод вызывается в FormLoad после инициализации компонентов.
Но если написать "@"D:\Projekt"" то работает.
Так же работает если метод использовать в событии например нажатие кнопки.
private void Form1_Load(object sender, EventArgs e)
{
FileSystemWatcher AbdWatcher = new FileSystemWatcher(AbdPath, "*.pdf");
AbdWatcher.SynchronizingObject = this;
AbdWatcher.EnableRaisingEvents = true;
AbdWatcher.Created += new FileSystemEventHandler(Abd_Watcher_Created);
AbdWatcher.Deleted += new FileSystemEventHandler(Abd_Watcher_Deleted);
AbdWatcher.Renamed += new RenamedEventHandler(Abd_Watcher_Renamed);
}
Цитата: XpucT от 28.09.2022, 23:26Добрый вечер 🖐
Если речь о переменнойAbdPath, то напишите как и куда Вы записали поле / переменную.
Добрый вечер 🖐
Если речь о переменной СкопированоAbdPath, то напишите как и куда Вы записали поле / переменную.
Цитата: Adler от 28.09.2022, 23:53Приветствую.
Что за переменнаяAbdPathи где она объявлена?
Приветствую.
Что за переменная СкопированоAbdPath и где она объявлена?
Цитата: Mihail от 29.09.2022, 12:50Это выглядит вот так.
Я хочу что бы путь, который выбрал пользователь, сохранялся. И засунул его Properties.Settings.
При запуске программы AbdPaht = "". А он неможет быть null.public Form1() { InitializeComponent(); Clipboard.Clear(); SettingsLoad(); } string StringAusfuranmeldungNummer = String.Empty; string AvmAusfuranmeldungNummer = String.Empty; string AbdAusfuranmeldungNummer = String.Empty; string AvmPath = String.Empty; string AbdPath = String.Empty; void SettingsSave() { Settings.Default.textBox3 = textBox3.Text; Settings.Default.textBox4 = textBox4.Text; Settings.Default.Save(); } void SettingsLoad() { textBox3.Text = Settings.Default.textBox3; textBox4.Text = Settings.Default.textBox4; } private void Form1_Load(object sender, EventArgs e) { FileSystemWatcher AbdWatcher = new FileSystemWatcher(AbdPath, "*.pdf"); AbdWatcher.SynchronizingObject = this; AbdWatcher.EnableRaisingEvents = true; AbdWatcher.Created += new FileSystemEventHandler(Abd_Watcher_Created); AbdWatcher.Deleted += new FileSystemEventHandler(Abd_Watcher_Deleted); AbdWatcher.Renamed += new RenamedEventHandler(Abd_Watcher_Renamed); }
Это выглядит вот так.
Я хочу что бы путь, который выбрал пользователь, сохранялся. И засунул его Properties.Settings.
При запуске программы AbdPaht = "". А он неможет быть null.
public Form1()
{
InitializeComponent();
Clipboard.Clear();
SettingsLoad();
}
string StringAusfuranmeldungNummer = String.Empty;
string AvmAusfuranmeldungNummer = String.Empty;
string AbdAusfuranmeldungNummer = String.Empty;
string AvmPath = String.Empty;
string AbdPath = String.Empty;
void SettingsSave() {
Settings.Default.textBox3 = textBox3.Text;
Settings.Default.textBox4 = textBox4.Text;
Settings.Default.Save();
}
void SettingsLoad() {
textBox3.Text = Settings.Default.textBox3;
textBox4.Text = Settings.Default.textBox4;
}
private void Form1_Load(object sender, EventArgs e)
{ FileSystemWatcher AbdWatcher = new FileSystemWatcher(AbdPath, "*.pdf");
AbdWatcher.SynchronizingObject = this;
AbdWatcher.EnableRaisingEvents = true;
AbdWatcher.Created += new FileSystemEventHandler(Abd_Watcher_Created);
AbdWatcher.Deleted += new FileSystemEventHandler(Abd_Watcher_Deleted);
AbdWatcher.Renamed += new RenamedEventHandler(Abd_Watcher_Renamed);
}
Цитата: XpucT от 29.09.2022, 14:10Вы сэкономите много времени, если проследуете последовательно по всем урокам C# в плейлисте.
И да, сразу подскажу, что сэкономите время ещё на том, что не будете говорить, что смотрели. Я вижу по коду, что нет.
Впереди будут большие проблемы, если Вы решите свой вопрос с watcher, но решите пропустить другие важные знания.
Начните с Visual Studio Community 2019.
Вы сэкономите много времени, если проследуете последовательно по всем урокам C# в плейлисте.
И да, сразу подскажу, что сэкономите время ещё на том, что не будете говорить, что смотрели. Я вижу по коду, что нет.
Впереди будут большие проблемы, если Вы решите свой вопрос с watcher, но решите пропустить другие важные знания.
Начните с Visual Studio Community 2019.
Цитата: Mihail от 02.10.2022, 00:01Привет !
Я смотрел и не понял и еще раз смотрели и снова не понял. Я создал переменную AbmPath = String.Empty. Потом с textbox передал значение и сохранил его в ресурсах. И только после этого передал его в watcher, но он находиться в formload, так как я ещё не присвоил значение при компиляции выдает ошибку на null. Что он передает в AbdPath ? Ссылку или значение ? И почему код внизу работает?
private void Form1_Load(object sender, EventArgs e) { if (Settings.Default.textBox3 == null) { AbdWatcher(Settings.Default.textBox3, "*.pdf"); } }
Привет !
Я смотрел и не понял и еще раз смотрели и снова не понял. Я создал переменную AbmPath = String.Empty. Потом с textbox передал значение и сохранил его в ресурсах. И только после этого передал его в watcher, но он находиться в formload, так как я ещё не присвоил значение при компиляции выдает ошибку на null. Что он передает в AbdPath ? Ссылку или значение ? И почему код внизу работает?
private void Form1_Load(object sender, EventArgs e)
{
if (Settings.Default.textBox3 == null) { AbdWatcher(Settings.Default.textBox3, "*.pdf"); }
}
Цитата: XpucT от 02.10.2022, 00:23Нет, Михаил, не смотрели.
Ибо, если бы смотрели, то не писали бы String.Empty, это первое.
Второе: string говорите, что не может быть null. Если у Вас Visual Studio 2019 с последними обновлениями (читай, последней версией языка C#), то, внезапно, string может быть null и это было введено относительно недавно. Невозможность сделать string null, а такжеизвращённыеособые фигурные скобки говорят, что Вы используете не Visual Studio 2019 / 2022, а решили поюзать что-то, что Вам искренне посоветовали какие-то "гуру". Ни в коем случае даже не пытаюсь решать за Вас, что Вам использовать для написания ПО, просто констатирую, что из одного примера кода Я целых 4 момента выловил, чтобы точно сказать, что где-то Вы что-то делаете не так, как объяснялось. Так или иначе будет проще разобраться с вопросом вот так:Озвучьте проблему, как будто Вы озвучиваете Техническое Задание (ТЗ) на заказ.
Мол, есть у меня файл. Называется 1.txt, хочу следить за ним при запуске программы..
Озвучьте точные файлы в точное время, когда и что нужно. Накидаем Вам код, Вы увидите, что Вы делали не так.
Нет, Михаил, не смотрели.
Ибо, если бы смотрели, то не писали бы String.Empty, это первое.
Второе: string говорите, что не может быть null. Если у Вас Visual Studio 2019 с последними обновлениями (читай, последней версией языка C#), то, внезапно, string может быть null и это было введено относительно недавно. Невозможность сделать string null, а также извращённые особые фигурные скобки говорят, что Вы используете не Visual Studio 2019 / 2022, а решили поюзать что-то, что Вам искренне посоветовали какие-то "гуру". Ни в коем случае даже не пытаюсь решать за Вас, что Вам использовать для написания ПО, просто констатирую, что из одного примера кода Я целых 4 момента выловил, чтобы точно сказать, что где-то Вы что-то делаете не так, как объяснялось. Так или иначе будет проще разобраться с вопросом вот так:
Озвучьте проблему, как будто Вы озвучиваете Техническое Задание (ТЗ) на заказ.
Мол, есть у меня файл. Называется 1.txt, хочу следить за ним при запуске программы..
Озвучьте точные файлы в точное время, когда и что нужно. Накидаем Вам код, Вы увидите, что Вы делали не так.
Цитата: Mihail от 02.10.2022, 17:18Я смотрел. Может я не так понял, так как я хотел выделить место в памяти. Я использую Visul Studio 2022. Я просто иногда пиши все в одну строку, если там мало кода мне так легче читать. Я записал видео в чем сама причина. Мне тяжело изложить все свои мысли. Я так же приложу код.
Первая проблема в том что я хочу что бы пользователь сам выбирал директорию. При повторно открытии она была выбрана. И это работает.
Я сделал так, что бы при загрузке FormLoad он начинал следить директории, которая была сохранена. И при первой компилляции выдает ошибку.using System; using System.IO; using System.Windows.Forms; namespace WindowsFormsApp2 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } string Path; private void Form1_Load(object sender, EventArgs e){ PdfWatcher(Properties.Settings.Default.textBox2, "*.pdf"); } void PdfWatcher(string Path, string filter) { FileSystemWatcher fileSystemWatcher = new FileSystemWatcher(Path,filter); fileSystemWatcher.SynchronizingObject = this; fileSystemWatcher.EnableRaisingEvents = true; fileSystemWatcher.Created += new FileSystemEventHandler(PdfWatcher_Create); fileSystemWatcher.Deleted += new FileSystemEventHandler(PdfWatcher_Delete); fileSystemWatcher.Renamed += new RenamedEventHandler(PdfWatcher_Rename); } void PdfWatcher_Rename(object sender, RenamedEventArgs e) => textBox1.Text += $"{e.OldName} Umbenannt ein {e.Name} {DateTime.Now.ToString("HH:mm")}\r\n"; void PdfWatcher_Delete(object sender, FileSystemEventArgs e) => textBox1.Text += $"{e.Name} Gelöscht {DateTime.Now.ToString("HH:mm")}\r\n"; void PdfWatcher_Create(object sender, FileSystemEventArgs e) => textBox1.Text += $"{e.Name} Erstellt {DateTime.Now.ToString("HH:mm")}\r\n"; private void button2_Click(object sender, EventArgs e) { FolderBrowserDialog dialog = new FolderBrowserDialog(); if (dialog.ShowDialog() == DialogResult.OK) { Path = dialog.SelectedPath; textBox2.Text = Path; //Properties.Settings.Default.textBox2 = Path; //Properties.Settings.Default.Save(); PdfWatcher(Path, "*.pdf"); } else return; } } }
Я смотрел. Может я не так понял, так как я хотел выделить место в памяти. Я использую Visul Studio 2022. Я просто иногда пиши все в одну строку, если там мало кода мне так легче читать. Я записал видео в чем сама причина. Мне тяжело изложить все свои мысли. Я так же приложу код.
Первая проблема в том что я хочу что бы пользователь сам выбирал директорию. При повторно открытии она была выбрана. И это работает.
Я сделал так, что бы при загрузке FormLoad он начинал следить директории, которая была сохранена. И при первой компилляции выдает ошибку.
using System;
using System.IO;
using System.Windows.Forms;
namespace WindowsFormsApp2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
string Path;
private void Form1_Load(object sender, EventArgs e){ PdfWatcher(Properties.Settings.Default.textBox2, "*.pdf"); }
void PdfWatcher(string Path, string filter)
{
FileSystemWatcher fileSystemWatcher = new FileSystemWatcher(Path,filter);
fileSystemWatcher.SynchronizingObject = this;
fileSystemWatcher.EnableRaisingEvents = true;
fileSystemWatcher.Created += new FileSystemEventHandler(PdfWatcher_Create);
fileSystemWatcher.Deleted += new FileSystemEventHandler(PdfWatcher_Delete);
fileSystemWatcher.Renamed += new RenamedEventHandler(PdfWatcher_Rename);
}
void PdfWatcher_Rename(object sender, RenamedEventArgs e) => textBox1.Text += $"{e.OldName} Umbenannt ein {e.Name} {DateTime.Now.ToString("HH:mm")}\r\n";
void PdfWatcher_Delete(object sender, FileSystemEventArgs e) => textBox1.Text += $"{e.Name} Gelöscht {DateTime.Now.ToString("HH:mm")}\r\n";
void PdfWatcher_Create(object sender, FileSystemEventArgs e) => textBox1.Text += $"{e.Name} Erstellt {DateTime.Now.ToString("HH:mm")}\r\n";
private void button2_Click(object sender, EventArgs e)
{
FolderBrowserDialog dialog = new FolderBrowserDialog();
if (dialog.ShowDialog() == DialogResult.OK)
{
Path = dialog.SelectedPath;
textBox2.Text = Path;
//Properties.Settings.Default.textBox2 = Path;
//Properties.Settings.Default.Save();
PdfWatcher(Path, "*.pdf");
}
else
return;
}
}
}
Цитата: Mihail от 02.10.2022, 18:38Я нашел решение.
Спасибо всем !
private void Form1_Load(object sender, EventArgs e) { try { PdfWatcher(Properties.Settings.Default.textBox2, "*.pdf"); } catch { } }
Я нашел решение.
Спасибо всем !
private void Form1_Load(object sender, EventArgs e)
{
try
{
PdfWatcher(Properties.Settings.Default.textBox2, "*.pdf");
}
catch
{
}
}
Цитата: XpucT от 02.10.2022, 18:45Это не решение, Михаил =/
Сейчас запишу Вам видео... Пару минут
Это не решение, Михаил =/
Сейчас запишу Вам видео... Пару минут