Laden...

Control wird nicht angezeigt [==> Liste möglicher Gründe]

Erstellt von RIDI2oo5 vor 17 Jahren Letzter Beitrag vor 17 Jahren 6.827 Views
RIDI2oo5 Themenstarter:in
140 Beiträge seit 2005
vor 17 Jahren
Control wird nicht angezeigt [==> Liste möglicher Gründe]

[EDIT]Abgetrennt von transparentes Label[/EDIT]

hallo zusammen

ich hatte das selbe problem und hier die lösung relativ schnell gefunden.
ich habe also probiert, das label selber zu erstellen und dem control-container der darunterliegenden pictureBox hinzuzufügen.

jedoch bekomme ich es irgendwie nicht hin, das control selber zu erstellen.
auch wenn ich es dem normalen container der form zuweise, sehe ich nichts von meinem label. ich kann zwar darauf zugreifen und es verändern (z.b. den text), aber sehen tu ich's nicht 🙁
ich sehe meinen fehler einfach nicht. ich würde meinen, ich hätte alles genau so gemacht, wie es auch der designer machen würde.

d.h.:
die definition
-->


private System.Windows.Forms.Label lblPID;

und eine zweite methode 'InitializeMyComponents()', die ich im Konstruktor der frmMain direkt nach 'InitializeComponents()' aufrufe.

-->


this.lblPID = new System.Windows.Forms.Label();

// 
			// lblPID
			// 
			this.lblPID.AutoSize = true;
			this.lblPID.BackColor = System.Drawing.Color.Transparent;
			this.lblPID.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
			this.lblPID.ForeColor = System.Drawing.Color.White;
			this.lblPID.Location = new System.Drawing.Point(14, 41);
			this.lblPID.Name = "lblPID";
			this.lblPID.Size = new System.Drawing.Size(31, 13);
			this.lblPID.TabIndex = 6;
			this.lblPID.Text = "11020349";

//this.pictureBox1.Controls.Add(this.lblPID);
this.Controls.Add(this.lblPID);

kann mir jemand sagen was ich übersehen habe? ich habe den eigenen code mit dem verglichen, den der designer erstellt, und sehe beim besten willen keinen unterschied, ausser dass sich der code für mein label halt in einer anderen methode befindet. 🤔

49.485 Beiträge seit 2005
vor 17 Jahren

Hallo RIDI2oo5,

bei Controls gibt es eigentlich nur wenige Möglichkeiten, warum man sie nicht sieht:

  1. Controls.Add vergessen (alternativ: Setzen des Parents vergessen)
  2. Control von einem davorliegenden Control verdeckt
    Achtung: Werden mehrere Controls in den gleichen Container hinzugefügt, sind die später hinzugefügten in der Z-Order weiter hinten, werden also ggf. durch früher hinzugefügten Controls verdeckt.
  3. Location ist so groß oder klein, dass das Control außerhalb des sichtbaren Bereichs des Containers liegt
    3a Dabei ist zu beachten, dass die Location des Controls immer relativ zum Container ist.
  4. Size ist zu klein
  5. Das Control ist vollständig transparent (oder - hat z.B. bei einem Panel - die gleiche Farbe wie der Hintergrund) oder ist hidden/invisible/versteckt
  6. Das Control wird in das falsche, also in ein anderes/neues Form hinzugefügt (das nicht angezeigt wird).
  7. Ein Panel bzw. Label ohne Text auf einem Form oder einem anderem Panel kann man nicht erkennen, wenn überall die gleiche (Hintergrund-)Farbe eingestellt ist.

herbivore

PS: Diese Liste wurde nachträglich ergänzt und sollte jetzt vollständig sein. Sie ist auch 2011 noch aktuell und wird es auch bleiben.

Suchhilfe: 1000 Worte, Button, CheckBox, ComboBox, DataGrid, DataGridView, DateTimePicker, Form, GroupBox, Label, ListBox, ListView, MaskedTextBox, MonthCalendar, NumericUpDown, Panel, PictureBox, ProgressBar, PropertyGrid, RadioButton, RichTextBox, ScrollBar, SplitContainer, Splitter, StatusBar, TabControl, TabPage, TextBox, TextBox, ToolBar, ToolStrip, TrackBar, TreeView, UpDownBase, UserControl, WebBrowser, Show, Hide, Visible, nicht sichtbar, sichtbare, sichtbares, sichbaren, sichbarem, unsichtbar, nicht angezeigt, nicht zu sehen, sehe nichts, versteckt, verborgen

RIDI2oo5 Themenstarter:in
140 Beiträge seit 2005
vor 17 Jahren

hallo herbivore

danke für die antwort.

ich habs mir angeschaut:

  1. Controls.Add hab' ich gemacht (siehe geposteten code oben)
  2. Ich habe versucht, das Control im form_load mit 'lblPID.BringToFront();' nach vorne zu holen. das hat geklappt, wenn der code so dasteht wie im beispiel oben, sprich wenn ich 'this.controls.add...' mache, nicht aber mit 'pictureBox1.controls.add...' 🤔
    da punkt 2 zur hälfte funktioniert, fallen punkt 3 und 4 weg.

das problem scheint also beim hinzufügen des labels zum container der pictureBox zu liegen.
habe es übrigens auch schon mit 'pictureBox1.SendToBack()' im form_load probiert, hat auch nichts gebracht.

<edit>
noch eine andere frage: muss man das control (in meinem fall das label) von hand erstellen, oder gibt es auch im designer eine möglichkeit, es dem control-container eines anderen controls zuzuweisen?
</edit>

49.485 Beiträge seit 2005
vor 17 Jahren

Hallo RIDI2oo5,

wenn du das Control in einen anderen Container hinzufügst und da die Koordinaten eines Controls immer relativ zum Container sind, kann natürlich 3. zutreffen.

herbivore

RIDI2oo5 Themenstarter:in
140 Beiträge seit 2005
vor 17 Jahren

hey, vielen dank herbivore. 👍
hat super geklappt.

darauf hätte ich eigentlich selber kommen müssen schäm