Új hozzászólás Aktív témák

  • bpx

    őstag

    válasz klambi #5116 üzenetére

    persze, mert te csak a jobb szélét vizsgálod a formnak, és ott is csak egyszer csökken a Location.X értéke, ezután feltétel újra igaz lesz és megint elkezd jobbra haladni, és emiatt ide-oda fog mozogni
    mindkét szélét vizsgálni kellene, és az aktuális irányt számontartani, és eszerint változtatni az X koordinátát
    erre bőven jó az is, hogy pl. egy változóban tárolod, hogy pozitív vagy negatív értékkel változtatod a Location.X-et
    a Form.Width-be pedig beletartozik pl. a keret szélessége is, ami Win7-en már jó sok pixel, szóval nem valami pontos, és emiatt "ki fog csúszni" a gomb a formból , helyette inkább a Form.ClientRectangle.Width-et ajánlom

    public partial class Form1 : Form
    {
    public Form1()
    {
    InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
    timer1.Start();
    }

    int inc = 7;

    private void timer1_Tick(object sender, EventArgs e)
    {
    button1.Location = new Point(button1.Location.X + inc, button1.Location.Y);
    if (button1.Location.X >= this.ClientRectangle.Width - button1.Width) inc *= -1;
    if (button1.Location.X <= this.ClientRectangle.X) inc *= -1;
    }
    }

    a feltételeket még nyilván lehet finomhangolni, hogy semmiképp ne folyjon ki a formból, de így is sokkal jobb, mint simán Form.Width-et használva

Új hozzászólás Aktív témák