Не работает метод openImageWithFolderButton_Click, должен взять путь выбранной картинки, достать оттуда все картинки с нужным расширением, заполнить ими список, после чего перебрать до первоначальной и вывести ее.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace PhotoViewer
{
public partial class Form1 : Form
{
#region Перемненые
List<string> images = new List<string>();
DirectoryInfo dir;
FileInfo[] files;
string path = null;
string selectedFile = null;
int numberOfImage = 0; // индекс картинки для просмотра и скрола
int imgInImages = 0; // индекс для картинки при выборе всех картинок из папки
#endregion
public Form1()
{
InitializeComponent();
}
private void menuButton_Click(object sender, EventArgs e)
{
contextMenuStrip1.Show(MousePosition, ToolStripDropDownDirection.BelowLeft);
}
private void filesButton_Click(object sender, EventArgs e)
{
openFileDialog1.Multiselect = true;
if(openFileDialog1.ShowDialog() == DialogResult.OK)
{
numberOfImage = 0;
images.Clear();
foreach (var image in openFileDialog1.FileNames)
{
images.Add(image);
}
pictureBox1.Load(images[0]);
imageNameLabel.Text = images[0];
}
}
private void nextButton_Click(object sender, EventArgs e)
{
if(numberOfImage != images.Count - 1)
{
try
{
numberOfImage++;
pictureBox1.Load(images[numberOfImage]);
imageNameLabel.Text = images[numberOfImage];
}
catch (ArgumentOutOfRangeException) { }
}
}
private void PreviousButton_Click(object sender, EventArgs e)
{
if(numberOfImage != 0)
{
try
{
numberOfImage--;
pictureBox1.Load(images[numberOfImage]);
imageNameLabel.Text = images[numberOfImage];
}
catch (ArgumentOutOfRangeException) { }
}
}
#region Цвета
private void menuButton_MouseLeave(object sender, EventArgs e)
{
menuButton.BackColor = Color.Black;
}
private void menuButton_MouseEnter(object sender, EventArgs e)
{
menuButton.BackColor = Color.LimeGreen;
}
private void nextButton_MouseEnter(object sender, EventArgs e)
{
nextButton.BackColor = Color.LimeGreen;
}
private void nextButton_MouseLeave(object sender, EventArgs e)
{
nextButton.BackColor = Color.Black;
}
private void PreviousButton_MouseEnter(object sender, EventArgs e)
{
PreviousButton.BackColor = Color.LimeGreen;
}
private void PreviousButton_MouseLeave(object sender, EventArgs e)
{
PreviousButton.BackColor = Color.Black;
}
#endregion
/// <summary>
/// Загружаем все картинки из папки где находится картинка и выводим ее
/// </summary>
private void openImageWithFolderButton_Click(object sender, EventArgs e)
{
if(openFileDialog1.ShowDialog() == DialogResult.OK)
{
numberOfImage = 0;
images.Clear();
selectedFile = openFileDialog1.FileName; // запоминаем изначально выбранную картинку
path = openFileDialog1.FileName;
// обрезаем имя до пути до папки
while (path[path.Length - 1] != '\\')
{
path = path.Remove(path.Length - 1, 1);
}
path = path.Remove(path.Length - 1, 1);
//получаем все файлы из папки
dir = new DirectoryInfo(path);
files = dir.GetFiles();
// выбираем файлы с нужным расширением и заполняем ими список images
foreach (var image in files)
{
if(image.Extension == ".BMP"
|| image.Extension == ".JPG"
|| image.Extension == ".GIF"
|| image.Extension == ".PNG")
{
images.Add(image.ToString());
}
}
// выводим изначально выбранную картинку
foreach (var image in images)
{
if(image == selectedFile)
{
pictureBox1.Load(images[imgInImages]);
break;
}
imgInImages++;
numberOfImage++;
}
}
}
private void clearButton_Click(object sender, EventArgs e)
{
pictureBox1.Image = null;
images.Clear();
}
}
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Сделал замер, чтобы выяснить создание и итерация какой коллекции быстрее IOrderedEnumerable<T> или SortedSet<T>
Доброго времени суток, не могу решить проблему программа выдаёт не правильный результат, я начинающий программист на C#, пожалуйста помогите,...
Имеется dll, в которой есть сущности и класс для работы с бд (используется рефлексия)Например, у меня обращение в клиенте DataManager
При создании файла или при его чтении я хочу указать путь таким образом, чтобы не приходилось вводить имя пользователяКак это делается в windows:...