List中的PictureBox不可见

时间:2015-12-30 04:29:47

标签: c# picturebox

我目前正在研究c#中的一种列车调度游戏,其中带有火车,轨道,信号等的“地图”存储在.txt文件中,并由PictureBoxes在特定位置可视化。 当我试图建立第一个调试地图(正方形中只有4个轨道)时,我看不到任何轨道(PictureBoxes),尽管我没有任何异常或任何东西。 我在属性 - >资源下添加了轨道(德语:“gleis”),它们的名称逻辑是bgleis(“besetztes gleis”=占用轨道)是带有列车的轨道,然后是轨道的长度在px(此时只有60和100)和“v”或“h”表示垂直或水平轨道

守则(德语中的变量名等,对不起) 第58行及以下是轨道加载的地方。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public List<Zug> ZuegeListe = new List<Zug>();
        public List<Signal> SignaleListe = new List<Signal>();
        public List<Gleis> GleiseListe = new List<Gleis>();
        public List<PictureBox> BildBoxenListe = new List<PictureBox>();
        public PictureBox BildBox = new PictureBox();

        public Form1()
        {
            InitializeComponent();
        }

        //the following happens, when the player starts a new game (TODO: browse files for "maps" txt's)
        private void neuesSpielStartenToolStripMenuItem_Click(object sender, EventArgs e)
        {

            string zeiletext;
            System.IO.StreamReader map =
                new System.IO.StreamReader("C: /Users/Tristan/Desktop/Bahnspiel/kartedebug.txt");

           while((zeiletext = map.ReadLine()) != null)
            {
                //checking, which type of object (track, train, signal...) is now getting loaded
                switch (zeiletext)
                {
                    //trains, note that they are not displayed by PicBoxes, for now they are just there 
                    case "Zug":
                        string lesezeileZug;
                        int sollIDZug;
                        int sollLauf;

                        lesezeileZug = map.ReadLine();
                        Int32.TryParse(lesezeileZug, out sollIDZug);

                        lesezeileZug = map.ReadLine();
                        Int32.TryParse(lesezeileZug, out sollLauf);

                        ZuegeListe.Add(new Zug(sollIDZug, sollLauf) );

                        //Debug Output of each
                        System.Diagnostics.Debug.WriteLine("Zug: " + sollIDZug + " " + sollLauf);
                        break;

                        //tracks, here is the problem with the PictureBoxes
                    case "Gleis":
                        string lesezeileGleis;
                        int sollIDGleis;
                        int sollPositionGleisX;
                        int sollPositionGleisY;
                        int sollLaengeGleis;
                        int sollAusrichtungGleis;
                        int sollBesetzung;
                        int sollReisezeit;
                        int sollVerbindungGle1;
                        int sollVerbindungGle2;

                        lesezeileGleis = map.ReadLine();
                        Int32.TryParse(lesezeileGleis, out sollIDGleis);

                        lesezeileGleis = map.ReadLine();
                        Int32.TryParse(lesezeileGleis, out sollPositionGleisX);

                        lesezeileGleis = map.ReadLine();
                        Int32.TryParse(lesezeileGleis, out sollPositionGleisY);

                        lesezeileGleis = map.ReadLine();
                        Int32.TryParse(lesezeileGleis, out sollLaengeGleis);

                        lesezeileGleis = map.ReadLine();
                        Int32.TryParse(lesezeileGleis, out sollAusrichtungGleis);

                        lesezeileGleis = map.ReadLine();
                        Int32.TryParse(lesezeileGleis, out sollBesetzung);

                        lesezeileGleis = map.ReadLine();
                        Int32.TryParse(lesezeileGleis, out sollReisezeit);

                        lesezeileGleis = map.ReadLine();
                        Int32.TryParse(lesezeileGleis, out sollVerbindungGle1);

                        lesezeileGleis = map.ReadLine();
                        Int32.TryParse(lesezeileGleis, out sollVerbindungGle2);

                        //Einzelgleis in Gleisliste speichern
                        GleiseListe.Add(new Gleis(sollIDGleis, sollPositionGleisX, sollPositionGleisY,
                            sollLaengeGleis, sollAusrichtungGleis, sollBesetzung, sollReisezeit, sollVerbindungGle1, sollVerbindungGle2));

                        //BildBoxFeeding: Location
                        BildBox.Location = new Point(sollPositionGleisX, sollPositionGleisY);

                        //BildBoxFeeding: Bild Vertical/Horizontal + Occupation + Size
                        if (sollAusrichtungGleis == 0 && sollBesetzung == 0) //Vertical free
                        {
                            switch (sollLaengeGleis)
                            {
                                case 60:
                                    BildBox.ImageLocation = "/sprites/gleis60v.png";
                                    BildBox.Size = new Size(5,60);
                                    break;
                                case 100:
                                    BildBox.ImageLocation = "/sprites/gleis100v.png";
                                    BildBox.Size = new Size(5, 100);
                                    break;
                                default:
                                    System.Diagnostics.Debug.WriteLine("Fehler: Falsche Laengenangaben bei Gleis vertikal");
                                    break;
                            }
                        }
                        else if (sollAusrichtungGleis == 0 && sollBesetzung != 0) //Vertical occupied
                        {
                            switch (sollLaengeGleis)
                            {
                                case 60:
                                    BildBox.ImageLocation = "/sprites/bgleis60v.png";
                                    BildBox.Size = new Size(5, 60);
                                    break;
                                case 100:
                                    BildBox.ImageLocation = "/sprites/bgleis100v.png";
                                    BildBox.Size = new Size(5, 100);
                                    break;
                                default:
                                    System.Diagnostics.Debug.WriteLine("Fehler: Falsche Laengenangaben bei besetztem Gleis vertikal");
                                    break;
                            }

                        }
                        else if (sollAusrichtungGleis == 1 && sollBesetzung == 0) // Horizontal Free
                        {
                            switch (sollLaengeGleis)
                            {
                                case 60:
                                    BildBox.ImageLocation = "/sprites/gleis60h.png";
                                    BildBox.Size = new Size(5, 60);
                                    break;
                                case 100:
                                    BildBox.ImageLocation = "/sprites/gleis100h.png";
                                    BildBox.Size = new Size(5, 100);
                                    break;
                                default:
                                    System.Diagnostics.Debug.WriteLine("Fehler: Falsche Laengenangaben bei Gleis horizontal");
                                    break;

                            }
                        }
                        else if (sollAusrichtungGleis == 1 && sollBesetzung != 0) // Horizontal occupied
                        {
                            switch (sollLaengeGleis)
                            {
                                case 60:
                                    BildBox.ImageLocation = "/sprites/bgleis60h.png";
                                    BildBox.Size = new Size(5, 60);
                                    break;
                                case 100:
                                    BildBox.ImageLocation = "/sprites/bgleis100h.png";
                                    BildBox.Size = new Size(5, 100);
                                    break;
                                default:
                                    System.Diagnostics.Debug.WriteLine("Fehler: Falsche Laengenangaben bei besetztem Gleis horizontal");
                                    break;

                            }
                        }

                        BildBoxenListe.Add(BildBox);

                            //Debug Output of each
                            System.Diagnostics.Debug.WriteLine("Gleis: ID: " + sollIDGleis + ", Besetzung: " + sollBesetzung + ", Reisezeit: " + sollReisezeit + ", Verb.1: " + sollVerbindungGle1 + ", Verb.2: " + sollVerbindungGle2);
                        break;

                    case "Signal":
                        string lesezeileSig;
                        int sollIDSig;
                        int sollSignalbild;
                        int sollPositionSignalX;
                        int sollPositionSignalY;
                        int sollAusrichtungSignal;
                        int sollVerbindungSig1;
                        int sollVerbindungSig2;

                        lesezeileSig = map.ReadLine();
                        Int32.TryParse(lesezeileSig, out sollIDSig);

                        lesezeileSig = map.ReadLine();
                        Int32.TryParse(lesezeileSig, out sollPositionSignalX);

                        lesezeileSig = map.ReadLine();
                        Int32.TryParse(lesezeileSig, out sollPositionSignalY);

                        lesezeileSig = map.ReadLine();
                        Int32.TryParse(lesezeileSig, out sollAusrichtungSignal);

                        lesezeileSig = map.ReadLine();
                        Int32.TryParse(lesezeileSig, out sollSignalbild);

                        lesezeileSig = map.ReadLine();
                        Int32.TryParse(lesezeileSig, out sollVerbindungSig1);

                        lesezeileSig = map.ReadLine();
                        Int32.TryParse(lesezeileSig, out sollVerbindungSig2);

                        SignaleListe.Add(new Signal(sollIDSig, sollPositionSignalX, sollPositionSignalY, sollAusrichtungSignal, sollSignalbild, sollVerbindungSig1, sollVerbindungSig2));
                        break;

                    default:
                        break;
                }

                foreach (PictureBox picbox in BildBoxenListe){
                    picbox.Visible = true;
                }


            }

            map.Close();

        }
    }

    public class Zug
    {
        private int IDZug;
        private int Lauf;

        public Zug(int sollIDZug, int sollLauf)
        {
            this.IDZug = sollIDZug;
            this.Lauf = sollLauf;
        }

    }

    public class Gleis
    {
        public int IDGleis;
        public int PositionGleisX;
        public int PositionGleisY;
        public int LaengeGleis;
        public int AusrichtungGleis;
        public int BesetzungGleis;
        public int ReisezeitGleis;
        public int Verbindung1Gleis;
        public int Verbindung2Gleis;

        public Gleis(int sollIDGleis, int sollPositionGleisX, int sollPositionGleisY, int sollLaengeGleis, int sollAusrichtungGleis, int sollBesetzung, int sollReisezeit, int sollVerbindung1, int sollVerbindung2)
        {
            this.IDGleis = sollIDGleis;
            this.PositionGleisX = sollPositionGleisX;
            this.PositionGleisY = sollPositionGleisY;
            this.LaengeGleis = sollLaengeGleis;
            this.AusrichtungGleis = sollAusrichtungGleis;
            this.BesetzungGleis = sollBesetzung;
            this.ReisezeitGleis = sollReisezeit;
            this.Verbindung1Gleis = sollVerbindung1;
            this.Verbindung2Gleis = sollVerbindung2;
        }
    }

    public class Signal
    {
        //Verbindung1 is the one, the signal is readible of
        private int IDSig;
        private int PositionSignalX;
        private int PositionSignalY;
        private int AusrichtungSignal;
        private int SigBild;
        private int Verbindung1;
        private int Verbindung2;

        public Signal(int sollIDSig, int sollPositionSignalX, int sollPositionSignalY, int sollAusrichtungSignal, int sollSigBild, int sollVerbindung1, int sollVerbindung2)
        {
            this.IDSig = sollIDSig;
            this.PositionSignalX = sollPositionSignalX;
            this.PositionSignalY = sollPositionSignalY;
            this.AusrichtungSignal = sollAusrichtungSignal;
            this.SigBild = sollSigBild;
            this.Verbindung1 = sollVerbindung1;
            this.Verbindung2 = sollVerbindung2;
        }
    }

}

提前多多感谢! 抱歉我的英语不好和/或如果我做了任何noob错误,我现在只学习c#2周

0 个答案:

没有答案