Ребят подскажите пожалуйста. Есть проект с перетаскиванием файла. Работает только с listbox. Не могу под listview переписать. Ошибки выдает ссылаясь на class FileStruct. Исходник проекта
using System.Drawing;
using System.IO;
using System.Windows.Forms;
namespace DaDExplorer
{
public partial class Form1 : Form
{
Rectangle? dragRect;
class FileStruct
{
public string File { get; set; }
public FileStruct ( string path ) {
File = path;
}
public override string ToString () {
return Path.GetFileName(File);
}
}
public Form1 () {
InitializeComponent();
listBox1.AllowDrop = true;
listBox1.SelectionMode = SelectionMode.MultiSimple;
listBox1.MouseDown += new MouseEventHandler(listBox1_MouseDown);
listBox1.MouseMove += new MouseEventHandler(listBox1_MouseMove);
listBox1.MouseUp += new MouseEventHandler(listBox1_MouseUp);
listBox1.DragDrop += new DragEventHandler(listBox1_DragDrop);
listBox1.DragEnter += new DragEventHandler(listBox1_DragEnter);
}
void listBox1_MouseUp ( object sender, MouseEventArgs e ) {
dragRect = null;
}
void listBox1_DragEnter ( object sender, DragEventArgs e ) {
if (!dragRect.HasValue && e.Data.GetDataPresent(DataFormats.FileDrop) && (e.AllowedEffect & DragDropEffects.Move) == DragDropEffects.Move)
e.Effect = DragDropEffects.Move;
else
e.Effect = DragDropEffects.None;
}
void listBox1_DragDrop ( object sender, DragEventArgs e ) {
if (e.Effect == DragDropEffects.Move) {
string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
// Добавление файлов в список
for (int i = 0; i < files.Length; i++)
listBox1.Items.Add(new FileStruct(files[i]));
}
}
void listBox1_MouseMove ( object sender, MouseEventArgs e ) {
if (listBox1.SelectedIndices.Count > 0 && dragRect.HasValue && !dragRect.Value.Contains(e.Location) ){
string[] files = new string[listBox1.SelectedIndices.Count];
// Составляем список файлов
for (int i = 0; i < files.Length; i++)
{
// files[i] = ((FileStruct)listBox1.SelectedItems[i]).File;
files[i] = ((FileStruct)listBox1.SelectedItems[i]).File;
}
// Формируем OLE объект
IDataObject obj = new DataObject(DataFormats.FileDrop, files);
DragDropEffects result = listBox1.DoDragDrop(obj, DragDropEffects.Move);
// Если было пермещение, то удаляем выделенные файлы из списка
if ( result == DragDropEffects.Move) {
for (int i = files.Length - 1; i >= 0 ; i--) {
if (!File.Exists(files[i]))
listBox1.Items.RemoveAt(listBox1.SelectedIndices[i]);
}
}
dragRect = null;
}
}
void listBox1_MouseDown ( object sender, MouseEventArgs e ) {
dragRect = null;
// Елсли нажата ЛКМ и CTRL
if (e.Button == MouseButtons.Left) { // && ModifierKeys == Keys.Control) { ПРИ ЗАЖАТОМ CTR left
dragRect = new Rectangle(
e.X - SystemInformation.DragSize.Width / 2, e.Y - SystemInformation.DragSize.Height / 2,
SystemInformation.DragSize.Width, SystemInformation.DragSize.Height
);
listBox1.SelectedIndices.Add(listBox1.IndexFromPoint(e.Location));
}
}
}
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Подскажите пожалуйста как лучше обработать исключения, которые могут возникнуть в процессе конвертации? строчек очень много, база спроектирована...
Есть метод который работает в отдельном от GUI потоке - обновляет коллекцию сообщений, которые получает из БДМетод запускается по таймеру...