Итак, я получаю эту ошибку в моей программе.Приведенный ниже код показывает, где я динамически добавляю TabControl и PictureBoxes в форму при загрузке.Изображения для PictureBoxes являются либо новым набором снимков экрана, которые делает моя программа, либо, если у пользователя есть незаконченный билет, он загрузит предыдущие снимки экрана в activeticket.Screenshots
и использует их вместо этого.Если программа делает новые снимки экрана, приведенный ниже код работает отлично.Однако, если программа пытается загрузить предыдущие снимки экрана, которые сохранены в формате .png
и загружены в формате .bmp
, я получаю исключение "Parameter not valid"
и не могу продолжить.
//IF COUNT OF SCREENSHOTS IN ACTIVE TICKET IS ZERO
//TAKE NEW SCREENSHOTS AND ASSIGN TO TABS
//ELSE ASSIGN EXISTING SCREENSHOTS TO TABS
List<Bitmap> screenshots;
if (activeticket.Screenshots.Count == 0)
{
screenshots = clsTools.TakeScreenshotList();
foreach (Bitmap bmp in screenshots)
{
activeticket.Screenshots.Add(bmp);
}
}
//REMOVE DEFAULT TAB
tabControl1.TabPages.Remove(Tab1);
foreach (Bitmap bmp in activeticket.Screenshots)
{
TabPage tp = new TabPage();
PictureBox pb = new PictureBox()
{
Dock = DockStyle.Fill,
SizeMode = PictureBoxSizeMode.StretchImage,
Image = bmp
};
tp.Controls.Add(pb); //PARAMETER NOT VALID ON THIS LINE
tabControl1.Controls.Add(tp);
tp.Text = "Screen";
CheckBox cb = new CheckBox()
{
Text = "Include in ticket",
Anchor = AnchorStyles.Bottom | AnchorStyles.Right,
AutoSize = true,
Location = new Point(558, 345),
Checked = true
};
tp.Controls.Add(cb);
cb.BringToFront();
}
Вот мой код для загрузки изображений.Обратите внимание, что ImageFilenames - это список строк, содержащий пути к изображениям.
internal void LoadScreenCaptures()
{
foreach (string file in ImageFilenames)
{
var Screencaps = new Bitmap(file);
Screenshots.Add(Screencaps);
Screencaps.Dispose(); //DISPOSE IS HERE SO I CAN DELETE FILES BELOW
}
foreach (string file in ImageFilenames)
{
File.Delete(file);
}
}
Я пытался использовать ImageConverter
, я пробовал около 15 различных способов, включая pb.Image = Image.FromFile(file)
, и мне не повезло!Вот след стека:
at System.Drawing.Image.get_FrameDimensionsList()
at System.Drawing.ImageAnimator.CanAnimate(Image image)
at System.Drawing.ImageAnimator.ImageInfo..ctor(Image image)
at System.Drawing.ImageAnimator.Animate(Image image, EventHandler onFrameChangedHandler)
at System.Windows.Forms.PictureBox.Animate(Boolean animate)
at System.Windows.Forms.PictureBox.Animate()
at System.Windows.Forms.PictureBox.OnParentChanged(EventArgs e)
at System.Windows.Forms.Control.AssignParent(Control value)
at System.Windows.Forms.Control.ControlCollection.Add(Control value)
at System.Windows.Forms.TabPage.TabPageControlCollection.Add(Control value)
at SETL.StartPage.StartPage_Load(Object sender, EventArgs e) in C:\Users\aaminahabdallah\Documents\Code\Ticketing\UI\Main UI\StartPage.cs:line 179
at System.Windows.Forms.Form.OnLoad(EventArgs e)
at System.Windows.Forms.Form.OnCreateControl()
at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
at System.Windows.Forms.Control.CreateControl()
at System.Windows.Forms.Control.WmShowWindow(Message& m)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
at System.Windows.Forms.Form.WmShowWindow(Message& m)
at System.Windows.Forms.Form.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
Любая помощь будет оценена!