PDA

View Full Version : جابه جايي كنترلهاي فرم در run time و تغيير اندازه آنها



amir-haghighi
شنبه 20 مهر 1387, 13:50 عصر
به ياد او::

ميخوايم چند تا كنترل رو در زمان ران تايم به برنامه اظافه كنيم و اينكه بتونيم اونها رو از طريغ دراگ كردن به مكان دلخواه ببريم و اندازه اونها رو تغير بديم!

در ضمن چطور بايد بعد از انجام كار هاي بالا ارتفاع و پهنا و مكان x و y اون كنترل رو به دست بيارم؟

SMRAH1
شنبه 20 مهر 1387, 14:00 عصر
برای افزودن کنترل ها به صورت دینامیک و در زمان اجرا (اگر منظورتون حالت طراحی مثل حالت طراحی Visual Stdio نباشه) باید کدهایی شبیه کدهایی که در متد InitializeComponent فرم ایجاد میشه،بنویسی که سه مرحله داره.اول ایجاد یک شی جدید با کلمه new،دوم تنظیم خصوصیات کنترل مورد نظر و سوم Add کردن به فرمتون.مثلا دستورات زیریک Label به فرم اضافه می کنه (خصوصیاتی رو که مشخص نکرده اید یا با مقادیر پیشفرض پر می کنه):


System.Windows.Forms label1 = new System.Windows.Forms.Label();

this.label1.AutoSize = true;
label1.Location = new System.Drawing.Point(12, 13);
label1.Name = "label1";
label1.Size = new System.Drawing.Size(109, 13);
label1.TabIndex = 0;
label1.Text = "You Text";
//If need add EventHandler,Added here!

this.Controls.Add(label1);
برای بدست اوردن مکان و اندازه کنترل به ترتیب از خصوصیت Location و Size هر کنترل استفاده می شه که اولی که شی Point بر میگردون (با خصوصیات x و y می تونی مقادیر دقیق رو بگیری) و دومی یک شی Size بر می گردون(با خصوصیات Width و Height).

موفق باشید

amir-haghighi
شنبه 20 مهر 1387, 14:04 عصر
به ياد او::

حالا فرض كنيد همين كنترل ليبل رو ميخوام كاربر بتونه مثل ويژوال استديو و به كمك موس روي فرم جايه جا كنه و اندازه اونها رو توسط موس تغيير بده.

SMRAH1
شنبه 20 مهر 1387, 14:36 عصر
همونطور که در پست های دیگه نوشتم،بهتره از کانتینر ها یا همون Componnent ها استفاده کنی.با این حال برای اینکه کلیت موضوع رو بدونید یک کد گذاشتم که در اون می شه کنترل های فرم رو Drag کرد.البته در این فرم کارای دیگه ای هم میشه کرد که مربوط به موضوع نیست (این فرم رو از توی یکی از Sample های خودم برداشتم و مطالب با ربط و بی ربط درونش پیدا میشه:چشمک:).