У меня есть три класса, FileManagerClass
содержит два события: EventHandler<FileTransferEventArgs> FileMove
и EventHandler<FileTransferEventArgs> FileMoveError
.
Затем у меня есть собственный EventArgs
класс с именем FileTransferEventArg
, который наследуется от базового EventArgs
класс. У меня есть третий класс, называемый FolderDirectoryModel
, который затем прослушивает события, которые будут вызваны, и отвечает на них либо OnFileMove(object sender, FileTransferEventArg arg)
, либо OnFileMoveError(object sender, FileTransferEventArg arg)
.
В целом это выглядит так:
class FileTransferManager
{
public event EventHandler<FileTransferEventArgs> FileMove;
public event EventHandler<FileTransferEventArgs> FileMoveError;
}
public class FileTransferEventArgs : EventArgs
{
string FileName { get; set; }
string Message { get; set; }
internal FileTransferEventArgs(FileModel file, string message)
{
this.FileName = file.FileName;
this.Message = message;
}
}
public class FolderDirectoryModel
{
void TransferFile(FileModel toBeTransfered, string destinationPath)
{
if (!File.Exists(toBeTransfered.FilePath))
{
File.Move(toBeTransfered.FilePath, destinationPath);
FileTransferEvents.FileTransferManager TransferAgent = new FileTransferEvents.FileTransferManager();
TransferAgent.FileMove += new EventHandler<FileTransferEventArgs>(OnFileMove);
}
else
{
FileTransferEvents.FileTransferManager TransferAgent = new FileTransferEvents.FileTransferManager();
TransferAgent.FileMoveError += new EventHandler<FileTransferEventArgs>(OnFileMoveError);
}
}
//Handler Methods
private void OnFileMoveError(object sender, FileTransferEventArgs args)
{
//what i want to happen
MessageBox.Show($"File {args.FileName} has not been moved succefully to {args.FilePath} because of....");
}
private void OnFileMove(object sender, FileTransferEventArgs args)
{
//what i want to happen
MessageBox.Show($"File {args.FileName} has been moved successfully to {args.FilePath}
}
}
Моя проблема в том, что я хотел бы использовать свойства внутри моего FileTransferEventArgs
класса для отображения имени файла, который был перемещен, независимо от того, было ли оно успешным, и с указанием причины, которая будет внутри свойства сообщения.
Однако, когда я все подключил, я не смог просмотреть передаваемые данные. Я не уверен, что использую события неправильно или пытаюсь сделать что-то, что невозможно.