ساخت کنترلها در هنگام اجرا در c# سی شارپ

آموزش ساخت کنترل ها در هنگام اجرا ( Run Time ) در c# سی شارپ

آموزش c# سی شارپ

برای ایجاد ساخت کنترل ها در هنگام اجرای برنامه در سی شارپ c# با انجام یک پروژه آنرا انجام آموزش میدهیم.

فرض کنید میخواهید با کلیک راست بر روی یک فرم منوی باز شده و با انتخاب دلخواه تکست باکس یک تکست باکس ایجاد و مقداری بر روی آن نوشته شده باشد.

اکنون بشکل زیر عمل کنید:

یک کانتکست منو استریپ بر روی فرم قرار دهید.

سپس در contextMenuStrip مقدار TextBox را در Collaction آن Add میکنیم.

اکنون برای داشتن مختصات موس بر روی صفحه دو متغییر عمومی بر روی فرم ایجاد کنید تا در هر لحظه مختصات موس را داشته باشید:


int TopClick = 0;
int leftClick = 0;

اکنون برای داشتن مختصات موس به رویداد mouseMove فرم احتیاج دارید.

رویداد mouseMove در سی شارپ زمانی رخ میدهد که موس بر روی فرم حرکت کند.

بنابراین در رویداد mouseMove فرم کد زیر را قرار میدهیم:


private void Form1_MouseMove(object sender, MouseEventArgs e)
{
TopClick = e.Y;
leftClick = e.X;
}

با اینکار با تکان موس مختصات در دو متغییر عمومی ذخیره میشود.

اکنون با کلیک راست بر روی صفحه منو استریپ باز میشود.

مقداری که منو استریپ به ما نشان میدهد همان چیزیست که در کالکشن منو استریپ اد کرده بودیک.

حالا با کلیک بر روی گزینه  TextBox منو استریپ قصد افزودن کنترل تکس باکس را داریم و نیز میخواهیم یک ایونت را برای تکست باکس مذکور هندل کنیم.

پس کد زیر را در رویداد کلید بر تکست باک منو استریپ قرار میدهیم:


private void textBoxToolStripMenuItem_Click(object sender, EventArgs e)
{
TextBox t = new TextBox();
t.Name = "t1";
t.Text = "Ali";
t.Top = TopClick;
t.Left = leftClick;
this.Controls.Add(t);
t.TextChanged += new EventHandler(t_TextChanged);
}

اکنون برای هندل کردن event رویداد تغییر textChange برای تکست باکس ایجاد شده به تابعی با نام t_TextChange که در رویداد فوق تعریف کردیم احتیاج خواهیم داشت.

بنابراین این تابع را به اینصورت بازنویسی میکنیم:


void t_TextChanged(object sender, EventArgs e)
{
MessageBox.Show(sender.ToString());
string s = ((TextBox)sender).Text;
}

اکنون با کمی پیشرفته تر کردن مثال فوق میخواهیم یک برچسب بر روی منو استریپ قرار دهیم تا با کلیک راست کردن در نقطه ای از فرم فرم دیگری بما نشان داده شود تا مقدار دریافت و بر روی لیبل نشان دهد.

در ابتا Lable را به منو استریپ اضافه میکنیم.

سپس در رویداد کلیک آن به این صورت عمل خواهیم کرد:


private void lableToolStripMenuItem_Click(object sender, EventArgs e)
{
Label l = new Label();
l.Name = "l1";
Form2 frm = new Form2();
string str = "";
if (frm.ShowDialog() == DialogResult.OK) str = frm.textBox1.Text;
l.Text = str;
l.Top = TopClick;
l.Left = leftClick;
this.Controls.Add(l);
}

همانطور که مشاهده میکنید فرم 2 برای دریافت اطلاعت lable باز شده و آنرا در لیبل نشان میدهد. ما این کنترل را در حالت اجرا به فرم اضافه کردیم.

ساخت افزودن کنترل در زمان حالت اجرا در سی شارپ c#

برای اضافه کردن سایر کنترل ها در سی شارپ c# به همین روش عمل میکنیم.

برای دانلود کد فوق: ایجاد ساخت افزودن کنترل در زمان حالت اجرا در c# سی شارپ از لینک زیر دانلود نمایید

ساخت کنترلها در هنگام اجرا در c# سی شارپ