Üdv, c# programozással kapcsolatban lenne kérdésem!?
Hogy lehet azt megoldani, hogy van egy osztályom ami létrehoz egy négyzetet egy gombbal amikor példányosítom, és ha a létrehozott gombra rákattintok, akkor még egy példányt létrehozzon saját magából és rajzolja ki a másik grafikai elemet is a formra (ezt végtelenszer)
Itt a programkód ez szerintem segít megérteni, hogy mi lenne a cél:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
Station st = new Station(this,0,0,300,300);
}
}
public class Station
{
Form myform;
public Station(Form form, int x, int y, int height, int width)
{
Panel pnl = new Panel();
pnl.Size = new System.Drawing.Size(height, width);
pnl.Location = new Point(x, y);
pnl.BorderStyle = BorderStyle.FixedSingle;
form.Controls.Add(pnl);
Button newButton = new Button();
pnl.Controls.Add(newButton);
newButton.Size = new Size(50, 100);
newButton.Location = new Point(pnl.Width-newButton.Width - 10, ((pnl.Height-newButton.Height)/2));
myform = form;
newButton.Click += new EventHandler(Button_Click);
}
private void Button_Click(object sender, EventArgs e)
{
Station st3 = new Station(myform, 800, 0, 300, 300);
}
}
Ha jobban megnézed el van tolva x irányba, természetesen ez nem a végleges és dinamikusan el lesz tolva mindig annyit, hogy ne egymásra tegye...
de egyenlőre nem tesz le még1 objektumot
Pedig működik. Az első panel (a gombbal) a (0,0) helyre kerül, a többi a (800,0)-ra... csak egymás alá... ezért gyakorlilag csak az első 2-t látod mindig.
Ha azt akarod, hogy az új panel a korábbiak felé kerüljön, ezt hívd meg a formra adást követően:
form.Controls.SetChildIndex(pnl, 0);
Ekkor midnig az új lesz felül (persze az ugyanúgy néz ki, mint a régi, szóval ránézésre semmmi különbség)
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!