簡體   English   中英

如何從列表框選定的項目中將圖像顯示在Picturbox中

[英]How to get an image to display in Picturbox from a Listbox selected item

在我實際調用SetPicture()方法之前,一切工作正常。 關於更改所選項目時為何不顯示圖像的任何想法。 現在,我只預設了一張圖像,直到發現問題為止。 謝謝你的幫助

namespace CelestialWindowsApp
{
    public partial class Form1 : Form
    {
        public static List CelestialLibrary = new List(); private static CelestialBody celestialBody; private static string name; private static string description; private static string image; public static CelestialBody NewPlanet { get { return celestialBody; } set { celestialBody = value; } }

        public Form1()
        {
            InitializeComponent();
            PopulateLibrary();
        }

        public void PopulateLibrary()//Runs when the Form 1 is loaded. Adds preset item into the ListNox.
        {
            CelestialLibrary = new List<CelestialBody>();
            CelestialBody cb1 = new CelestialBody("Earth", "Our Home", @"C:\Users\Cassidy\documents\visual studio 2015\Projects\CelestialWindowsApp\CelestialWindowsApp\ImageResources\earthimage.jpg");
            CelestialBody cb2 = new CelestialBody("Mars", "4th planet from the sun.");
            CelestialBody cb3 = new CelestialBody("Venus", "2nd planet from the son");

            CelestialLibrary.Add(cb1);
            CelestialLibrary.Add(cb3);
            lbLibrary.DataSource = CelestialLibrary;
            foreach (var p in CelestialLibrary)
            {
                lbLibrary.DisplayMember = "ShowBodies";
            }
        }

        public void AddItem() // Adds the new Item to my library and then adds to and updates the ListBox;
        {
            CelestialBody cb;
            name = txtboxName.Text;
            description = txtboxDescription.Text;
            image = txtboxImagePath.Text;
            cb = new CelestialBody(name, description, image);
            CelestialLibrary.Add(cb);
            MessageBox.Show(name + " has been added to the Library.");
            txtboxName.Text = null;
            txtboxDescription.Text = null;
            lbLibrary.DataSource = null;
            lbLibrary.DataSource = CelestialLibrary;
            lbLibrary.DisplayMember = "ShowBodies";
        }
        public void DisplayItemInfo()//Displays the current selected item information.
        {
            List<CelestialBody> bodyList = (List<CelestialBody>)lbLibrary.DataSource;
            CelestialBody currentItem = bodyList[lbLibrary.SelectedIndex];
            foreach (CelestialBody cb in bodyList)
            {
                if (currentItem.MyId == cb.MyId)
                    celestialBody = new CelestialBody(cb.Name, cb.Description, cb.ImagePath);
                {
                    txtboxItemInfo.Text = celestialBody.Description;
                    SetPicture(celestialBody.ImagePath);
                }
            }
        }

        public void SetPicture(string image)
        {
            if (picboxBodyImage.Image != null)
            {
                picboxBodyImage.Image.Dispose();
            }
            picboxBodyImage.ImageLocation = image;
        }

        private void btnAddNewBody_Click(object sender, EventArgs e)
        {
            AddItem();
        }

        private void lbLibrary_SelectedIndexChanged(object sender, EventArgs e)
        {
            DisplayItemInfo();
        }
    }
}

您是否檢查了可變image的路徑。 假設路徑正確,請嘗試以下

picboxBodyImage.Image = Image.FromFile(image);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM