0 امتیاز
قبل در برنامه نویسی توسط (1.9هزار امتیاز)
ویرایش شده قبل توسط

بهترین روش و تکنولوژی برای کنترل و دسترسی به  رفتار های کنترلهای ساخته شده به صورت دینامیک در  Desktop Application چیست ؟

1 پاسخ

0 امتیاز
قبل توسط (1.9هزار امتیاز)
انتخاب شده قبل توسط
 
بهترین پاسخ

برای این کار که تعریف آن از شی مورد نظر ساخته می شود کد زیر یک Button در حالت Run Time می سازه :

Button btnButton = new Button();
btnButton.Text = string.Format("{0} , {1} ", "New Button", i.ToString());
btnButton.Size = new Size(100, 30);
this.Controls.Add(btnButton);

اشکالات این کد چیست ؟

رفتاری برای کنترل Button تعریف نشده که آن را با اوبجکت Tag در مرحله ای بعدی انجام می دهیم و اینکه کار گرافیکی شما برای این برنامه مناسب نیست و اینکه الان بعد RUN برنامه Button در Location 0,0 قرار داره که میشه واسه آن تعریف کرد به این شکل :

btnButton.Location=new Point( x, y);

خوب حالا بهترین راه برای این کار چیست ؟

استفاده از کنترل flowLayoutPanel است که کد شما برای قرار گیری در این کنترل به این شکل می شود :

Button btnButton = new Button();
btnButton.Text = string.Format("{0} , {1} ", "New Button", i.ToString());
btnButton.Size = new Size(100, 30);
  flPanel.Controls.Add(btnButton);

خوب حالا رفتار کنترل های که در حالت Run Time ساخته می شوند به این گونه می توان دسترسی پیدا کرد :

Button btnButton = new Button();
 btnButton.Text = string.Format("{0} , {1} ", "New Button", i.ToString());
btnButton.Size = new Size(100, 30);
btnButton.Tag = i;
 btnButton.Click += btnButton_Click;
flPanel.Controls.Add(btnButton);

خوب حالا چگونه با استفاده از رفتار CliCK یک Button به عنوان مثال یک MessageBox. نشون بدهیم خیلی ساده بعد از تعریف یک Event در Visual Studio یک متد ساخته میشه با نام btnButton_Click ، که بدنه ان به این شکل است :

private void btnButton_Click(object sender, EventArgs e)
        {

              MessageBox.Show("Text Button");

        }

خوب حالا شما با کد نویسی در این هنگام RinTime که Button را می سازید کدهای شما به آن اختصاص داده میشه و تمام ولی اگر تعداد آنها بیش از یکی بود چی میشه ؟ مشکل خاصی نداره اینم با استفاده از اوبجکت Tag أن را حل می کنیم  برای حل این باید بدانیم چطور به کنترلی که کلیک کردیم در کدنویسی به دستش بیاریم به همین دلیل چون Object پاس کاری بشه بینه Function ها برای همین برای دسترسی آن باید از Object Sender استفاده کنیم به فرض مثال شما 4 Button در RunTime ساختید این کد 4 Button را از هم تفکیک می کند :

private void btnButton_Click(object sender, EventArgs e)
        {

           
            Button btntmp = (Button) sender;
            string btnvlaueTAG = btntmp.Tag.ToString().Trim();
            switch (btnvlaueTAG)
            {
                case "1": MessageBox.Show("1"); break;
                case "2": MessageBox.Show("2"); break;
                case "3": MessageBox.Show("3"); break;
                case "4": MessageBox.Show("4"); break;

            }

و در آخر اینکه Object Tag مقدار هر button را از هم جدا می کند که بستگی به خودتون داره می تونید واسه هر کدام متد ویا واسه همشون یک کلاس بسازید 
           

 

سوالات مشابه

0 امتیاز
0 پاسخ 317 بازدید
0 امتیاز
1 پاسخ 568 بازدید
+1 امتیاز
1 پاسخ 473 بازدید
سوال شده 11 سال قبل در برنامه نویسی توسط hldv (760 امتیاز)
0 امتیاز
2 پاسخ 3.1هزار بازدید
0 امتیاز
1 پاسخ 1.2هزار بازدید
0 امتیاز
1 پاسخ 387 بازدید
سوال شده 11 سال قبل در برنامه نویسی توسط Saeed Zarinfam (1.1هزار امتیاز)
+1 امتیاز
1 پاسخ 573 بازدید
+2 امتیاز
1 پاسخ 2.6هزار بازدید
+1 امتیاز
1 پاسخ 434 بازدید
+1 امتیاز
1 پاسخ 3.0هزار بازدید
سوال شده 11 سال قبل در برنامه نویسی توسط سلطانی (1.1هزار امتیاز)
...