Нужен первый шаг в создании проекта - C#
Формулировка задачи:
Пролог
Доброго времени суток, дорогие коллеги. То, что я попрошу далее, знаю, что по идеи не решается на форумах тем методом, которым прошу у Вас я. Но решение данной задачи для знающих людей займет на вечность меньше времени, чем у меня - человека который только начал делать первые шаги в данном языке программирования, да к тому же и времени осталось, совсем ничего, как хоть что-нибудь, по решению данной задачи, мне предстоит продемонстрировать на столь суровый суд. Вот именно в этом "хоть что-нибудь" я Вас и прошу помочь мне, утопающему в нехватке времени.Цели и задачи
А задача выглядит как то так: надо создать win приложение, при загрузке которого отображается основное окно приложение, где располагается некое поле (не важно какое,пускай это будет какая-нибудь графика (картинка)), так же,есть кнопка, по нажатию на которую вылезает панелька где расположено n-количество элементов чего-либо (допустим элементы то же в виде картинок). Для начала хотелось бы узнать у Вас: 1) как сделать так, чтобы при перетаскивании с панельки, на поле,какого-нибудь элемента, данный элемент пропадал из числа элементов панельки и появлялся в числе элементов отображенных на поле основного окна, при этом, велся бы подсчет того, сколько осталось элементов на панельке, и сколько элементов сейчас находится на поле. 2) Как сделать чтобы подсчет велся по разным типам элементов (допустим на поле 1 яблоко и 2 груши и все это в виде элементов-картинок). Заранее большое спасибо! Надеюсь ответы по данному сабжу будут полезны не только мне и уйдут в копилку данного портала =)Решение задачи: «Нужен первый шаг в создании проекта»
textual
Листинг программы
using System; using System.Collections.Generic; using System.Drawing; using System.IO; using System.Windows.Forms; namespace WindowsFormsApplicationTest2 { public partial class MainForm : Form { // Количество картинок private const int BitmapsCount = 6; // Имена картинок private readonly string[] bitmapNames; // Массив PictureBox в которые будут загружаться картинки private readonly PictureBox[] pictureBoxes; private Rectangle dragBoxFromMouseDown; public MainForm() { InitializeComponent(); // Создаём массив из pictureBox расположенных на форме pictureBoxes = new[] { pictureBox1, pictureBox2, pictureBox3, pictureBox4, pictureBox5, pictureBox6, }; // Имена файлов bitmapNames = new[] { "1_01.jpg", "1_02.jpg", "1_03.jpg", "1_04.jpg", "1_05.jpg", "1_06.jpg", }; for ( int i = 0; i < BitmapsCount; i++ ) { PictureBox currentBox = pictureBoxes[ i ]; // Разрешаем перетаскиваение currentBox.AllowDrop = true; // Присваиваем обработчики событий мыши и перетаскивания currentBox.MouseDown += PictureBoxMouseDown; currentBox.MouseMove += PictureBoxMouseMove; currentBox.MouseUp += PictureBoxMouseUp; currentBox.DragDrop += PictureBoxDragDrop; currentBox.DragOver += PictureBoxDragOver; } // Загружаем картинки LoadImages(); } private void LoadImages() { // Перемешиваем имена файлов var bitmapNamesShuffled = bitmapNames.RandomShuffle(); // Папка с картинками const string bitmapFolder = "Images"; for ( int i = 0; i < BitmapsCount; i++ ) { PictureBox currentBox = pictureBoxes[ i ]; // Имя файла string currentImageName = bitmapNamesShuffled[ i ]; // Путь к файлу string path = Path.Combine( Environment.CurrentDirectory, bitmapFolder, currentImageName ); // Загружаем картинки currentBox.Load( path ); } } // Перемешиваем и загружаем private void ButtonShuffleClick( object sender, EventArgs e ) { LoadImages(); } private void PictureBoxMouseDown( object sender, MouseEventArgs e ) { Size dragSize = SystemInformation.DragSize; dragBoxFromMouseDown = new Rectangle( new Point( e.X - (dragSize.Width / 2), e.Y - (dragSize.Height / 2) ), dragSize ); } private void PictureBoxMouseMove( object sender, MouseEventArgs e ) { if ( (e.Button & MouseButtons.Left) == MouseButtons.Left ) { PictureBox pictureBox = (PictureBox)sender; if ( dragBoxFromMouseDown != Rectangle.Empty && !dragBoxFromMouseDown.Contains( e.X, e.Y ) ) { // При перетаскивании передаётся ссылка на текущий pictureBox pictureBox.DoDragDrop( pictureBox, DragDropEffects.Move ); } } } private void PictureBoxMouseUp( object sender, MouseEventArgs e ) { dragBoxFromMouseDown = Rectangle.Empty; } private void PictureBoxDragDrop( object sender, DragEventArgs e ) { if ( e.Data.GetDataPresent( typeof ( PictureBox ) ) ) { // Полученный pictureBox PictureBox item = (PictureBox)e.Data.GetData( typeof ( PictureBox ) ); // Текущий pictureBox PictureBox box = (PictureBox)sender; // Меняем картинки местами Image tempImage = box.Image; box.Image = item.Image; item.Image = tempImage; } } private void PictureBoxDragOver( object sender, DragEventArgs e ) { e.Effect = DragDropEffects.Move; } } // Дополнение, перемешивающее массив public static class Extensions { public static IList<T> RandomShuffle<T>( this IEnumerable<T> list ) { Random random = new Random(); var shuffle = new List<T>( list ); for ( int i = 2; i < shuffle.Count; ++i ) { T temp = shuffle[ i ]; int nextRandom = random.Next( i - 1 ); shuffle[ i ] = shuffle[ nextRandom ]; shuffle[ nextRandom ] = temp; } return shuffle; } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д