Προς το περιεχόμενο

C# μετακίνηση φόρμας με κώδικα


bnvdarklord

Προτεινόμενες αναρτήσεις

Δημοσ.

Προσπαθώ στο onLoad μιας φόρμας μου, να βάλω κώδικα που να την βάζει στην θέση 500χ500...

Οταν γράφω

>Form1.Location = new Point(500,500)

Μου βγάζει το εξής error

An object reference is required for the non-static field, method or property System.Windows.Forms.Form.Location.get

ενώ αν γράψω

>(sender as Form).Location = new Point(500,500)

δουλεύει κανονικά...

 

Το sender as Form και το Form1 ομως δεν ειναι το ίδιο πράγμα?(εφοσον o sender ειναι η Form1)

Δημοσ.

Form1 ειναι ... τι? Τεσπα αν ειναι αυτο που νομιζω, βαλε this αντι Form1

>    public partial class Form1 : Form
   {


       public Form1()
       {
           InitializeComponent();
           this.Load += delegate(object s, EventArgs e)
           {
               this.Location = new Point(500, 500);
           };
       }   
   }

 

Το sender as Form και το Form1 ομως δεν ειναι το ίδιο πράγμα?(εφοσον o sender ειναι η Form1)

Οχι
Δημοσ.

Χμμμ.. Καλα το καταλαβα. Το Form1 ειναι το αντικειμενο βαση Form το οποιο εσυ αλλαζεις (κουμπια μεγεθος κλπ κλπ), αρα ειναι ενα object και οχι instance απο το Form.

Δημοσ.
Αρα δεν μπορώ αμεσα να πω Form1.Location?

Γιατι ομως για κάποιο textbox που εχω δημιουργήσει μπορώ να πώ textbox1.Text ?

Δες το αρχειο program.cs

btw το αρχειο From1.cs δεν εχει ολο το κωδικα αλλα ενα κομματι το αλλο ειναι στο From1.Desinger.cs

Δημοσ.

Το ξέρω ότι δεν ειναι όλος ο κώδικας στο αρχειο Form1.cs ... Βασικά αυτό που δεν καταλαβαινω είναι γιατι αν πω textbox1.Text ειναι σωστό, αλλα δεν μπορώ να πώ Form1.Location...

Δημοσ.

Γιατι? σου γραψω κατι και αν καταλαβεις καταλαβες, αλλιως θα στα εξηγησει ο karnage :-)

 

>using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Drawing;
namespace ConsoleApplication1
{

   public class Form1 : Form
   {
       private TextBox textBox1;
       private Button button1;
       public Form1()
       {
           textBox1 = new TextBox();
           button1 = new Button();
           textBox1.Location = new Point(10, 30);
           button1.Location = new Point(10, 60);
           button1.Size = textBox1.Size;
           button1.Text = "Press me";
           button1.Click += delegate { textBox1.Text = "Hello"; };
           this.Controls.Add(textBox1);
           this.Controls.Add(button1);
       }
       [b]static [/b]void Main(string[] args)
       {
           Form1 form1 = new Form1();
           form1.Text = "TEST";
           Application.EnableVisualStyles();
           Application.Run(form1);
           //


       }
   }
}

Δημοσ.

πιο απλά... άνοιξε το Program.cs και βρες το:

 

>Application.Run(new Form1());

 

αυτό δημιουργεί ένα νέο αντικείμενο τύπου Form1 αλλά δεν του δίνει όνομα ώστε να μπορείς να το χρησιμοποιείς. Άλλαξε τη γραμμή ως εξής:

 

>Form1 f1 = new Form1();
Application.Run(f1);

 

και θα μπορείς να αναφέρεσαι στη φόρμα σου μέσω της μεταβλητής f1.

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...