bnvdarklord Δημοσ. 31 Μαρτίου 2010 Δημοσ. 31 Μαρτίου 2010 Προσπαθώ στο 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)
Evgenios1 Δημοσ. 1 Απριλίου 2010 Δημοσ. 1 Απριλίου 2010 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) Οχι
bnvdarklord Δημοσ. 1 Απριλίου 2010 Μέλος Δημοσ. 1 Απριλίου 2010 Form1 ειναι η φόρμα που θελω να μετακινήσω.... Γιατί πρέπει να βάλω this και δεν γινεται με Form1?
bnvdarklord Δημοσ. 1 Απριλίου 2010 Μέλος Δημοσ. 1 Απριλίου 2010 Μμμ δεν ειμαι σίγουρος.... Την φόρμα την φτιάχνει αυτόματα το Visual Studio... λογικά ειναι Form.
Evgenios1 Δημοσ. 1 Απριλίου 2010 Δημοσ. 1 Απριλίου 2010 Χμμμ.. Καλα το καταλαβα. Το Form1 ειναι το αντικειμενο βαση Form το οποιο εσυ αλλαζεις (κουμπια μεγεθος κλπ κλπ), αρα ειναι ενα object και οχι instance απο το Form.
bnvdarklord Δημοσ. 1 Απριλίου 2010 Μέλος Δημοσ. 1 Απριλίου 2010 Αρα δεν μπορώ αμεσα να πω Form1.Location? Γιατι ομως για κάποιο textbox που εχω δημιουργήσει μπορώ να πώ textbox1.Text ?
Evgenios1 Δημοσ. 1 Απριλίου 2010 Δημοσ. 1 Απριλίου 2010 Αρα δεν μπορώ αμεσα να πω Form1.Location?Γιατι ομως για κάποιο textbox που εχω δημιουργήσει μπορώ να πώ textbox1.Text ? Δες το αρχειο program.cs btw το αρχειο From1.cs δεν εχει ολο το κωδικα αλλα ενα κομματι το αλλο ειναι στο From1.Desinger.cs
bnvdarklord Δημοσ. 1 Απριλίου 2010 Μέλος Δημοσ. 1 Απριλίου 2010 Το ξέρω ότι δεν ειναι όλος ο κώδικας στο αρχειο Form1.cs ... Βασικά αυτό που δεν καταλαβαινω είναι γιατι αν πω textbox1.Text ειναι σωστό, αλλα δεν μπορώ να πώ Form1.Location...
Evgenios1 Δημοσ. 1 Απριλίου 2010 Δημοσ. 1 Απριλίου 2010 Γιατι? σου γραψω κατι και αν καταλαβεις καταλαβες, αλλιως θα στα εξηγησει ο 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); // } } }
top-gear Δημοσ. 1 Απριλίου 2010 Δημοσ. 1 Απριλίου 2010 πιο απλά... άνοιξε το Program.cs και βρες το: >Application.Run(new Form1()); αυτό δημιουργεί ένα νέο αντικείμενο τύπου Form1 αλλά δεν του δίνει όνομα ώστε να μπορείς να το χρησιμοποιείς. Άλλαξε τη γραμμή ως εξής: >Form1 f1 = new Form1(); Application.Run(f1); και θα μπορείς να αναφέρεσαι στη φόρμα σου μέσω της μεταβλητής f1.
bnvdarklord Δημοσ. 5 Απριλίου 2010 Μέλος Δημοσ. 5 Απριλίου 2010 ΟΚ, κατάλαβα... σας ευχαριστώ και τους 2!
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.