نمایش نتایج 1 تا 17 از 17

نام تاپیک: event در dynamic object

  1. #1

    Question event در dynamic object

    سلام
    خسته نباشید دوستان

    من به یه مشکل برخوردم و هرچی تلاش کردم نتونستم اونو حل کنم... اگر میتونید به من کمک کنید


    مشکل:
    من یک button به صورت dynamic تولید میکنم ولی نمی تونم از اون button در event ها استفاده کنم... باید چیکار کنم

    {
    int x = 100, y = 100, n = 1;
    public void CreateDynamicButton(Form form)
    {
    // Create a Button object
    Button dynamicButton = new Button();

    // Set Button properties
    dynamicButton.Name = "btn";
    dynamicButton.Name = "btn" + n;
    dynamicButton.Location = new Point(x, y);
    dynamicButton.Text = dynamicButton.Name;

    // Add a Button Click Event handler
    dynamicButton.Click += new EventHandler(dynamicButton_Click);

    // Add Button to the Form. Placement of the Button
    // will be based on the Location and Size of button
    form.Controls.Add(dynamicButton);
    n += 1;
    x += 50;
    y += 50;
    }

    private void dynamicButton_Click(object sender, EventArgs e)
    {

    "در اینجا button رو ندارم";
    }
    }




    ممنون میشم کمکم کنید ....
    آخرین ویرایش به وسیله sareham238 : دوشنبه 17 فروردین 1394 در 12:50 عصر

  2. #2

    نقل قول: event در dynamic object

    شما Button رو در متد تعریف کردی برای همین وقتی از متد خارج میشی هیج آبجکتی بهش اشاره نداره
    باید آبجکتی که اونو تو خودش داره بصورت فیلد خارج از متد تعریف کنی
    این خطو قبل از تعریف متد CreateDynamicButton بنویس

    Button dynamicButton=null;
    این خط در متد رو هم

    Button dynamicButton = newButton();
    تغییر بده به

    dynamicButton = newButton();


  3. #3
    کاربر دائمی آواتار یونس ابراهیمی
    تاریخ عضویت
    آذر 1391
    محل زندگی
    کوهدشت
    سن
    42
    پست
    195

    نقل قول: event در dynamic object

    اصلاح شده کدتون


    using System;
    using System.Drawing;
    using System.Windows.Forms;

    namespace WindowsFormsApplication12
    {
    public partial class Form1 : Form
    {
    public Form1()
    {
    InitializeComponent();

    int x = 100, y = 100, n = 1;
    // Create a Button object
    Button dynamicButton = new Button();

    // Set Button properties
    dynamicButton.Name = "btn";
    dynamicButton.Location = new Point(x, y);
    dynamicButton.Text = dynamicButton.Name;

    // Add a Button Click Event handler
    dynamicButton.Click += new EventHandler(dynamicButton_Click);

    // Add Button to the Form. Placement of the Button
    // will be based on the Location and Size of button
    this.Controls.Add(dynamicButton);
    n += 1;
    x += 50;
    y += 50;
    }

    private void dynamicButton_Click(object sender, EventArgs e)
    {
    MessageBox.Show("OK");
    }
    }
    }

  4. #4

    نقل قول: event در dynamic object

    یعنی من باید یک آبجکتی رو تعریف کنم که Dynamic button من رو بسازه..؟؟؟

  5. #5

    نقل قول: event در dynamic object

    نه شما باید آبجکتی که Button رو توش داری بطور قابل دسترسی در کلاست تعریف کنی که در همه متدها بهش دسترسی داشته باشی اسمت اینطور تعریف کردن میشه فیلد

    راه اول:

    using System;
    using System.Drawing;
    using System.Windows.Forms;


    namespace WindowsFormsApplication22
    {
    public partial class Form1 : Form
    {
    public Form1()
    {
    InitializeComponent();


    int x = 100, y = 100, n = 1;
    // Create a Button object
    Button dynamicButton = new Button();


    // Set Button properties
    dynamicButton.Name = "btn";
    dynamicButton.Location = new Point(x, y);
    dynamicButton.Text = dynamicButton.Name;


    // Add a Button Click Event handler
    dynamicButton.Click += new EventHandler(dynamicButton_Click);


    // Add Button to the Form. Placement of the Button
    // will be based on the Location and Size of button
    this.Controls.Add(dynamicButton);
    n += 1;
    x += 50;
    y += 50;
    }


    private void dynamicButton_Click(object sender, EventArgs e)
    {
    MessageBox.Show(((Button)sender).Text);
    }
    }
    }


    راه دوم:

    using System;
    using System.Drawing;
    using System.Windows.Forms;

    namespace WindowsFormsApplication12
    {
    public partial class Form1 : Form
    {
    Button dynamicButton=null;
    public Form1()
    {
    InitializeComponent();

    int x = 100, y = 100, n = 1;
    // Create a Button object
    dynamicButton = new Button();

    // Set Button properties
    dynamicButton.Name = "btn";
    dynamicButton.Location = new Point(x, y);
    dynamicButton.Text = dynamicButton.Name;

    // Add a Button Click Event handler
    dynamicButton.Click += new EventHandler(dynamicButton_Click);

    // Add Button to the Form. Placement of the Button
    // will be based on the Location and Size of button
    this.Controls.Add(dynamicButton);
    n += 1;
    x += 50;
    y += 50;
    }

    private void dynamicButton_Click(object sender, EventArgs e)
    {
    MessageBox.Show(dynamicButto.Text);
    }
    }
    }

  6. #6

    نقل قول: event در dynamic object

    آقا یونس من با MessageBox میتونم کار کنم ولی از خود button چجوری استفاده کنم

    مثل:
    button1.Left=20;

  7. #7

    نقل قول: event در dynamic object

    نقل قول نوشته شده توسط am_al_59 مشاهده تاپیک
    نه شما باید آبجکتی که Button رو توش داری بطور قابل دسترسی در کلاست تعریف کنی که در همه متدها بهش دسترسی داشته باشی اسمت اینطور تعریف کردن میشه فیلد
    میشه یه مثال بزنید ...

    ممنون میشم

  8. #8
    کاربر دائمی آواتار یونس ابراهیمی
    تاریخ عضویت
    آذر 1391
    محل زندگی
    کوهدشت
    سن
    42
    پست
    195

    نقل قول: event در dynamic object

    منظورتونو متوجه نمیشم، شما اگه برنامه رو اجرا کنید یه دکمه روی فرم دارین، حالا میخواین چکارش کنید؟

  9. #9

    نقل قول: event در dynamic object

    این بنده خدا منظورش اینه که به کلید در سایر متدها دسترسی داشته باشه
    چون کلید رو در متد تعریف کرده فقط هم در همون متد بهش دسترسی داره
    البته من جسارت کردم از کد شما که کامل و دقیق بود استفاده کردم منظور خودمو بگم
    امیدوارم منظور ایشونو درست فهمیده باشم
    کدهای ویرایش شده رو در پست برای دوروش متفاوت گذاشتم

  10. #10

    نقل قول: event در dynamic object

    نقل قول نوشته شده توسط am_al_59 مشاهده تاپیک
    نه شما باید آبجکتی که Button رو توش داری بطور قابل دسترسی در کلاست تعریف کنی که در همه متدها بهش دسترسی داشته باشی اسمت اینطور تعریف کردن میشه فیلد

    راه اول:

    using System;
    using System.Drawing;
    using System.Windows.Forms;


    namespace WindowsFormsApplication22
    {
    public partial class Form1 : Form
    {
    public Form1()
    {
    InitializeComponent();


    int x = 100, y = 100, n = 1;
    // Create a Button object
    Button dynamicButton = new Button();


    // Set Button properties
    dynamicButton.Name = "btn";
    dynamicButton.Location = new Point(x, y);
    dynamicButton.Text = dynamicButton.Name;


    // Add a Button Click Event handler
    dynamicButton.Click += new EventHandler(dynamicButton_Click);


    // Add Button to the Form. Placement of the Button
    // will be based on the Location and Size of button
    this.Controls.Add(dynamicButton);
    n += 1;
    x += 50;
    y += 50;
    }


    private void dynamicButton_Click(object sender, EventArgs e)
    {
    MessageBox.Show(((Button)sender).Text);
    }
    }
    }


    راه دوم:

    using System;
    using System.Drawing;
    using System.Windows.Forms;

    namespace WindowsFormsApplication12
    {
    public partial class Form1 : Form
    {
    Button dynamicButton=null;
    public Form1()
    {
    InitializeComponent();

    int x = 100, y = 100, n = 1;
    // Create a Button object
    dynamicButton = new Button();

    // Set Button properties
    dynamicButton.Name = "btn";
    dynamicButton.Location = new Point(x, y);
    dynamicButton.Text = dynamicButton.Name;

    // Add a Button Click Event handler
    dynamicButton.Click += new EventHandler(dynamicButton_Click);

    // Add Button to the Form. Placement of the Button
    // will be based on the Location and Size of button
    this.Controls.Add(dynamicButton);
    n += 1;
    x += 50;
    y += 50;
    }

    private void dynamicButton_Click(object sender, EventArgs e)
    {
    MessageBox.Show(dynamicButto.Text);
    }
    }
    }
    ممنون از کمکتون

  11. #11
    کاربر دائمی آواتار یونس ابراهیمی
    تاریخ عضویت
    آذر 1391
    محل زندگی
    کوهدشت
    سن
    42
    پست
    195

    نقل قول: event در dynamic object

    اینطور هم میشه

    using System;
    using System.Drawing;
    using System.Windows.Forms;

    namespace WindowsFormsApplication12
    {
    public partial class Form1 : Form
    {
    public Form1()
    {
    InitializeComponent();

    Button dynamicButton = new Button();

    dynamicButton.Location = new System.Drawing.Point(100, 213);
    dynamicButton.Name = "button2";
    dynamicButton.Size = new System.Drawing.Size(75, 23);
    dynamicButton.TabIndex = 0;
    dynamicButton.Text = "button2";
    dynamicButton.UseVisualStyleBackColor = true;
    dynamicButton.Click += new System.EventHandler(this.button2_Click);

    this.Controls.Add(dynamicButton);
    }

    private void button2_Click(object sender, EventArgs e)
    {
    MessageBox.Show("OK");
    }

    }
    }

  12. #12

    نقل قول: event در dynamic object

    به dynamicButton_MuoseMove نگاه کنید

    باز اون قسمت ارور میده




    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;

    namespace WindowsFormsApplication6
    {
    public partial class Form1 : Form
    {
    public Form1()
    {
    InitializeComponent();

    int btnX = 100, btnY = 100, n = 1;
    // Create a Button object
    Button dynamicButton = new Button();

    // Set Button properties
    dynamicButton.Name = "btn";
    dynamicButton.Name = "btn" + n;
    dynamicButton.Location = new Point(btnX, btnY);
    dynamicButton.Text = dynamicButton.Name;

    // Add a Button Click Event handler
    dynamicButton.MouseDown += new System.Windows.Forms.MouseEventHandler(dynamicButt on_MuoseDown);
    dynamicButton.MouseMove += new System.Windows.Forms.MouseEventHandler(dynamicButt on_MuoseMove);
    dynamicButton.MouseUp += new System.Windows.Forms.MouseEventHandler(dynamicButt on_MuoseUp);

    // Add Button to the Form. Placement of the Button
    // will be based on the Location and Size of button
    this.Controls.Add(dynamicButton);
    n += 1;
    btnX += 50;
    btnY += 50;
    }

    bool xy;
    int x = 100, y = 100, n = 1;
    private void dynamicButton_MuoseDown(object sender, MouseEventArgs e)
    {
    this.xy = true;
    this.x = e.X;
    this.y = e.Y;
    }

    private void dynamicButton_MuoseMove(object sender, MouseEventArgs e)
    {
    if (this.xy == true)
    {
    dynamicButton.Left = dynamicButton.Left + e.X - this.x;
    dynamicButton.Top = dynamicButton.Top + e.Y - this.y;
    }
    }

    private void dynamicButton_MuoseUp(object sender, MouseEventArgs e)
    {
    this.xy = false;
    }

    }
    }


  13. #13

    نقل قول: event در dynamic object

    این خطو شما گذاشتی توی متد Form()

    Button dynamicButton = new Button();

    تبدیل کند به

    dynamicButton = new Button();
    قبل از متد Form() هم این خطو بزار

    Button dynamicButton=null;

  14. #14

    نقل قول: event در dynamic object

    عین این کدو پیست کن

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;


    namespace WindowsFormsApplication6
    {
    public partial class Form1 : Form
    {
    Button dynamicButton = null;
    public Form1()
    {
    InitializeComponent();

    int btnX = 100, btnY = 100, n = 1;
    // Create a Button object
    Button dynamicButton = new Button();

    // Set Button properties
    dynamicButton.Name = "btn";
    dynamicButton.Name = "btn" + n;
    dynamicButton.Location = new Point(btnX, btnY);
    dynamicButton.Text = dynamicButton.Name;

    // Add a Button Click Event handler
    dynamicButton.MouseDown += new System.Windows.Forms.MouseEventHandler(dynamicButt on_MuoseDown);
    dynamicButton.MouseMove += new System.Windows.Forms.MouseEventHandler(dynamicButt on_MuoseMove);
    dynamicButton.MouseUp += new System.Windows.Forms.MouseEventHandler(dynamicButt on_MuoseUp);

    // Add Button to the Form. Placement of the Button
    // will be based on the Location and Size of button
    this.Controls.Add(dynamicButton);
    n += 1;
    btnX += 50;
    btnY += 50;
    }


    void Form1_Load(object sender, EventArgs e)
    {
    }


    bool xy;
    int x = 100, y = 100, n = 1;
    private void dynamicButton_MuoseDown(object sender, MouseEventArgs e)
    {
    this.xy = true;
    this.x = e.X;
    this.y = e.Y;
    }


    private void dynamicButton_MuoseMove(object sender, MouseEventArgs e)
    {
    if (this.xy == true)
    {
    dynamicButton.Left = dynamicButton.Left + e.X - this.x;
    dynamicButton.Top = dynamicButton.Top + e.Y - this.y;
    }
    }


    private void dynamicButton_MuoseUp(object sender, MouseEventArgs e)
    {
    this.xy = false;
    }


    }
    }

  15. #15

    نقل قول: event در dynamic object

    دوست عزیز این راه حل هم جواب نداد ...وقتی تو RunTime میخوام از MouseMove استفاده کنم برنامه ارور میده

  16. #16

    نقل قول: event در dynamic object

    درست کار میکنه این نمونش همون کاری که میخواهید رو داره انجام میده

  17. #17

    نقل قول: event در dynamic object

    نقل قول نوشته شده توسط am_al_59 مشاهده تاپیک
    درست کار میکنه این نمونش همون کاری که میخواهید رو داره انجام میده
    به درست کار میکنه

    ممنون از راهنمایی تون

تاپیک های مشابه

  1. پاسخ: 0
    آخرین پست: جمعه 06 بهمن 1391, 16:01 عصر
  2. افزودن event یا property به یک object
    نوشته شده توسط masoudmok در بخش C#‎‎
    پاسخ: 6
    آخرین پست: سه شنبه 17 خرداد 1390, 21:00 عصر
  3. سوال: نحوه پیاده سازی Event Objects در دلفی ؟
    نوشته شده توسط مهران رسا در بخش مباحث عمومی دلفی و پاسکال
    پاسخ: 2
    آخرین پست: جمعه 18 تیر 1389, 19:03 عصر
  4. سوال: کلاس پویا؟ (Dynamic Object)
    نوشته شده توسط ahmadsystemco در بخش C#‎‎
    پاسخ: 1
    آخرین پست: یک شنبه 29 دی 1387, 18:30 عصر
  5. سوال: Append کردن تابع خودم به Event های یک object
    نوشته شده توسط reza_optical در بخش برنامه نویسی در 6 VB
    پاسخ: 7
    آخرین پست: شنبه 01 تیر 1387, 03:50 صبح

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •