Imagelist value set to null in fullscreen picturebox form. Why?

  • Thread starter Thread starter SlenderMan564
  • Start date Start date
S

SlenderMan564

Guest
I got a form with a listview for image icons to appear on. Have a imagelist that will store values and bind them to listview. And a picture box for the selected image to appear on and a full screen button. Trying to open image from listview to display in a picturebox and then click full screen button to display image in full screen. ImageLocation in frmFullScreen is null. Why? In frmMain It is being displayed using the file path and displays fine.

I know I can’t use the Image property on one form and ImageLocation on another which is what I’m doing on this line in loadImageList() in a for loop.

imageList1.Images.Add(single_file, Image.FromFile(single_file));

Then I’m trying to read it at fullscreen in a picturebox in frmFullScreen_Load

pictureBox1.ImageLocation = _objImageData.FileName;


What am I doing wrong, please?


Here is the code for my startup form. frmMain

namespace PictureViewer
{
public partial class frmMain : Form
{
#region Object declarations
string msg = "No image in picture box";
frmFullScreen _objFrmFullScreen = new frmFullScreen();
ImageData _objImgData = new ImageData();
#endregion Object declarations

#region Initializers
public frmMain()
{
InitializeComponent();
}

//Displays larger instance of selected image in picture box.
private void lstImages_SelectedIndexChanged(object sender, EventArgs e)
{
//FOR i is less than the first image.
for (int i = 0; i < lstImages.SelectedItems.Count; i++)
{
//GET filename from listview and store in index.
_objImgData.FileName = lstImages.SelectedItems.Text;
//Create larger instance of image.
pictureBox1.Image = Image.FromFile(_objImgData.FileName);
//Fill panel to the width and height of picture box.
panel1.AutoScrollMinSize = new Size(pictureBox1.Image.Width, pictureBox1.Image.Height);
_objImgData.ImageIndex = lstImages.SelectedIndices[0];
loadImageMetaData();
}
}
#endregion Initializers

#region Methods
//TO DO: Append items to the end of list without throwing exceptions.
public void loadImageList()
{
_objImgData.Counter= 0;
imageList1.Images.Clear();
lstImages.Clear();

oFD1.InitialDirectory = "C:\\";
oFD1.Title = "Open an Image File";
oFD1.Filter = "JPEGS|*.jpg|GIFS|*.gif|PNGS|*.png|BMPS|*.bmp";

//Open Dialog Box.
var oldResults = oFD1.ShowDialog();

if (oldResults == DialogResult.Cancel)
{
return;
}

//GET amount of filenames.
int num_of_files = oFD1.FileNames.Length;
//Temp array i created to solve the error.
//Store filenames in string array.
List<string> arryFilePaths = new List<string>(num_of_files);

foreach (string single_file in oFD1.FileNames)
{
arryFilePaths.Add(single_file);
imageList1.Images.Add(single_file, Image.FromFile(single_file));
_objImgData.Counter++;
}
//BIND image list to listview.
lstImages.LargeImageList = imageList1;


for (int i = 0; i < _objImgData.Counter; i++)
{
//DISPLAY filename and image from image index param.
lstImages.Items.Add(arryFilePaths, i);
}
}
#endregion Methods


Code for my ImageData class.

namespace Data
{
public class ImageData
{
public string FileName { get; set; }
public int Counter { set; get; } = 0;
public int ImageIndex { get; set; }
}
}

Code for frmFullScreen. Taskbar class works so I commented it.

namespace FullScreen
{
public partial class frmFullScreen: Form
{
Data.ImageData _objImageData = new Data.ImageData();

public frmFullScreen()
{
InitializeComponent();
}

private void frmFullScreen_Load(object sender, EventArgs e)
{
pictureBox1.ImageLocation = _objImageData.FileName;
this.TopMost = true;
this.WindowState = FormWindowState.Maximized;
//and then to exit:
this.FormBorderStyle = FormBorderStyle.Sizable;
this.BackColor = System.Drawing.Color.Black;
this.FormBorderStyle = FormBorderStyle.None;
//Taskbar.Hide();
}

private void frmFullScreen_keyUp(object sender, KeyEventArgs e)
{
if (e.KeyData == Keys.Escape)
{
//Taskbar.Show();
this.DialogResult = DialogResult.Cancel;
Close();
}
}
}
}


Kind regards,

Jordan Nash

Continue reading...
 
Back
Top