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

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

  1. #1
    کاربر تازه وارد
    تاریخ عضویت
    مرداد 1390
    محل زندگی
    تهران
    پست
    95

    سوال در مورد دسترسی به یک object خاص

    سلام.
    چجوری میتونم به یک combobox موجود در فرم دیگر دسترسی داشته باشم.

  2. #2
    کاربر دائمی آواتار nilmil_nil
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    بندر گناوه
    سن
    36
    پست
    598

    نقل قول: سوال در مورد دسترسی به یک object خاص

    کامبو باکس رو Public کن اونجوری میشه

  3. #3

    نقل قول: سوال در مورد دسترسی به یک object خاص

    باید خاصیت modifires اون کنترل رو public کنی
    بعد توی فرم های دیگه که می خوای به اون دسترسی داشته باشی ، از اون فرم که یک instance گرفتی بعد می تونی به اون کنترل دسترسی داشته باشی
    مثلا اسم فرمت Form1 هست و یک textbox داری که می خوای بهش دسترسی داشته باشی . بعد از اینکه modifires مربوط به textbox رو publicکردی این رو یک جای دیگه تو برنامه که لازم داری اینو مینویسی

    Form1 frm = new Form1();
    frm.textbox.text = "test";

    :D همین

  4. #4
    کاربر تازه وارد
    تاریخ عضویت
    مرداد 1390
    محل زندگی
    تهران
    پست
    95

    نقل قول: سوال در مورد دسترسی به یک object خاص

    من همین کارو کردم ولی جواب نمیده خاصیت modifieمربوط به comboرو به حالت public درآوردم
    form frm=new frmstatus();
    ولی وقتی مینویسم frm. نام como که تو فرم status هست نمایش داده نمیشه.

  5. #5

    نقل قول: سوال در مورد دسترسی به یک object خاص

    نقل قول نوشته شده توسط mmbarname مشاهده تاپیک
    من همین کارو کردم ولی جواب نمیده خاصیت modifieمربوط به comboرو به حالت public درآوردم
    form frm=new frmstatus();
    ولی وقتی مینویسم frm. نام como که تو فرم status هست نمایش داده نمیشه.
    نام فرمی که اینجا نوشتین غلطه


    frmstatus F = NEW frmstatus();

  6. #6
    کاربر تازه وارد
    تاریخ عضویت
    مرداد 1390
    محل زندگی
    تهران
    پست
    95

    نقل قول: سوال در مورد دسترسی به یک object خاص

    درست شد در این صورت فقط میشه اون object رو مقدار دهی کرد من میخوام به مقداره درون combo دسترسی پیدا کنم که نمیشه.

  7. #7
    کاربر تازه وارد
    تاریخ عضویت
    مرداد 1390
    محل زندگی
    تهران
    پست
    95

    نقل قول: سوال در مورد دسترسی به یک object خاص

    کسی نمیدونه؟

  8. #8

    نقل قول: سوال در مورد دسترسی به یک object خاص

    نقل قول نوشته شده توسط mmbarname مشاهده تاپیک
    کسی نمیدونه؟
    به نظر من کدهای مربوط به combo را بگذارید تا زودتر به نتیجه برسید
    و اگر ایرادی در کدهای شما باشه دوستان متوجه اون می شوند و شما را مطلع می سازند

  9. #9
    کاربر تازه وارد
    تاریخ عضویت
    مرداد 1390
    محل زندگی
    تهران
    پست
    95

    نقل قول: سوال در مورد دسترسی به یک object خاص

    من در form1 به combo یک مقدار میدم ودر form2 میخوام اون مقدارو نشون بدم
    FrmStatus frm = new FrmStatus();
    MessageBox.Show(frm.cmbDriver.Text);

  10. #10
    کاربر دائمی آواتار wolf_majid
    تاریخ عضویت
    آذر 1387
    محل زندگی
    اصفهان
    پست
    534

    نقل قول: سوال در مورد دسترسی به یک object خاص

    شما به راحتی با دونستن نام شی مورد نظر می تونید بهش دسترسی داشته باشید بدون اینکه پابلیکش کنید

    Form2 frm2 = new Form2();
    (frm2.Controls["comboBox1"] as ComboBox).Text="Test";
    (frm2.Controls["comboBox1"] as ComboBox).SelectedItem = (frm2.Controls["comboBox1"] as ComboBox).Items[2];
    frm2.ShowDialog();

  11. #11
    کاربر تازه وارد
    تاریخ عضویت
    مرداد 1390
    محل زندگی
    تهران
    پست
    95

    نقل قول: سوال در مورد دسترسی به یک object خاص

    من هنوز نتونستم
    تو کمبو فرم1 10 تا اسم وجود داره میخوام با باز کردن فرم 2 مقدار انتخاب شده در کمبو فرم1 رو نمایش بدم .در فرم 2 نمایش بدم

  12. #12
    VIP آواتار Amir Oveisi
    تاریخ عضویت
    اسفند 1384
    محل زندگی
    هر جا که حال کنم - فعلا یزد
    پست
    2,604

    نقل قول: سوال در مورد دسترسی به یک object خاص

    نقل قول نوشته شده توسط nilmil_nil مشاهده تاپیک
    کامبو باکس رو Public کن اونجوری میشه
    چرا public ؟

    نقل قول نوشته شده توسط majidrezaei2007 مشاهده تاپیک
    باید خاصیت modifires اون کنترل رو public کنی
    بعد توی فرم های دیگه که می خوای به اون دسترسی داشته باشی ، از اون فرم که یک instance گرفتی بعد می تونی به اون کنترل دسترسی داشته باشی
    مثلا اسم فرمت Form1 هست و یک textbox داری که می خوای بهش دسترسی داشته باشی . بعد از اینکه modifires مربوط به textbox رو publicکردی این رو یک جای دیگه تو برنامه که لازم داری اینو مینویسی

    Form1 frm = new Form1();
    frm.textbox.text = "test";

    :D همین
    چرا public ؟

    نقل قول نوشته شده توسط wolf_majid مشاهده تاپیک
    شما به راحتی با دونستن نام شی مورد نظر می تونید بهش دسترسی داشته باشید بدون اینکه پابلیکش کنید

    Form2 frm2 = new Form2();
    (frm2.Controls["comboBox1"] as ComboBox).Text="Test";
    (frm2.Controls["comboBox1"] as ComboBox).SelectedItem = (frm2.Controls["comboBox1"] as ComboBox).Items[2];
    frm2.ShowDialog();
    اگر فرم ۲ از قبل باز بوده باشه چی؟

    نقل قول نوشته شده توسط mmbarname مشاهده تاپیک
    من هنوز نتونستم
    تو کمبو فرم1 10 تا اسم وجود داره میخوام با باز کردن فرم 2 مقدار انتخاب شده در کمبو فرم1 رو نمایش بدم .در فرم 2 نمایش بدم
    چرا قبل از ایجاد این تاپیک جستجو نکردید؟

  13. #13
    کاربر دائمی آواتار F.zeinali
    تاریخ عضویت
    آبان 1389
    محل زندگی
    تهران
    پست
    243

    نقل قول: سوال در مورد دسترسی به یک object خاص

    سلام دوست عزیز
    فرض کن شما تو فرم 1 یک CombpBox داری و می خوای با زدن Button اطلاعاتش ریخته بشه داخل CombpBoxای که در فرم 2 هستش

    ابتدا در فرم 2 اینو بنویس

    public Form2(string[] Text)
    {
    InitializeComponent();

    comboBox1.Items.AddRange(Text);
    }



    حالا در فرم 1 بنویس

    private void button1_Click(object sender, EventArgs e)
    {
    string[] arrcom =new string[comboBox1.Items.Count];
    for (int i = 0; i < comboBox1.Items.Count; i++)
    {
    arrcom[i] = comboBox1.Items[i].ToString();

    }

    Form2 f2 = new Form2(arrcom);
    f2.Show();
    }


    موفق باشی.

  14. #14
    کاربر دائمی آواتار wolf_majid
    تاریخ عضویت
    آذر 1387
    محل زندگی
    اصفهان
    پست
    534

    نقل قول: سوال در مورد دسترسی به یک object خاص

    اگر فرم ۲ از قبل باز بوده باشه چی؟


    حالا درست شد ؟
      Form2 frm2 = new Form2();
    frm2.Show();
    foreach (Form frm in Application.OpenForms)
    {
    if (frm is Form2)
    (frm).Controls["comboBox1"].Text = ":D";
    }


    فکر کنم بهترین روش همون ارسال رخداد باشه , درسته ؟

  15. #15

  16. #16
    VIP آواتار Amir Oveisi
    تاریخ عضویت
    اسفند 1384
    محل زندگی
    هر جا که حال کنم - فعلا یزد
    پست
    2,604

    نقل قول: سوال در مورد دسترسی به یک object خاص

    نقل قول نوشته شده توسط F.zeinali مشاهده تاپیک
    سلام دوست عزیز
    فرض کن شما تو فرم 1 یک CombpBox داری و می خوای با زدن Button اطلاعاتش ریخته بشه داخل CombpBoxای که در فرم 2 هستش

    ابتدا در فرم 2 اینو بنویس

    public Form2(string[] Text)
    {
    InitializeComponent();

    comboBox1.Items.AddRange(Text);
    }



    حالا در فرم 1 بنویس

    private void button1_Click(object sender, EventArgs e)
    {
    string[] arrcom =new string[comboBox1.Items.Count];
    for (int i = 0; i < comboBox1.Items.Count; i++)
    {
    arrcom[i] = comboBox1.Items[i].ToString();

    }

    Form2 f2 = new Form2(arrcom);
    f2.Show();
    }


    موفق باشی.
    این روش شما درسته ولی آیا به نظرتون محدودیت ایجاد نمی کنه؟

  17. #17
    کاربر دائمی آواتار wolf_majid
    تاریخ عضویت
    آذر 1387
    محل زندگی
    اصفهان
    پست
    534

    نقل قول: سوال در مورد دسترسی به یک object خاص

    نقل قول نوشته شده توسط Amir Oveisi مشاهده تاپیک
    (Application.OpenForms["yourOpenFormName"] as YourOpenFormClassName).Controls["YourComboboxName"] as ComboBox

    با این فرض که اسم کلاس فرم دوم YourOpenFormClassName و مقدار Name اش YourOpenFormName است.
    این رو تست کرده بودم . فقط فرم اول باز شده از نوع فرم2 رو مقدارش را تغییر میده
    تست کنید
     Form2 frm2 = new Form2();
    frm2.Name = "frmTest";
    frm2.Show();
    ((Application.OpenForms["frmTest"] as Form2).Controls["comboBox1"] as ComboBox).Text = ":d";


    البته من از روش delegate و event استفاده می کنم

  18. #18
    کاربر دائمی آواتار wolf_majid
    تاریخ عضویت
    آذر 1387
    محل زندگی
    اصفهان
    پست
    534

    نقل قول: سوال در مورد دسترسی به یک object خاص

    روش مورد استفاده من برای انجام چنین کاری :

    1- تعریف کلاس زیر :

     public class MoveObjectEventArgs : EventArgs
    {
    /// <summary>
    ///
    /// </summary>
    /// <param name="obj">موضوع ارسالی</param>
    public MoveObjectEventArgs(object obj)
    {
    _object = obj;
    }

    /// <summary>
    /// شی مورد انتقال
    /// </summary>
    private object _object;

    /// <summary>
    /// شی ذخیره شده را بر می گرداند
    /// </summary>
    public object GetObject
    {
    get { return _object; }
    }
    }


    2- تعریف یک رخداد و صدا زدن آن در فرم فرستنده :

    public delegate void _SendObject(object sender, MoveObjectEventArgs e);
    public event _SendObject SendObject;

     private void button1_Click(object sender, EventArgs e)
    {
    Form2 frm2 = new Form2();
    frm2.Name = "frmTest";
    if (SendObject != null)
    SendObject(this, new MoveObjectEventArgs(":D"));
    frm2.Show();


    3- انجام تغییرات در فرم گیرنده :

     public Form2()
    {
    InitializeComponent();
    (Application.OpenForms["Form1"] as Form1).SendObject += getObject;
    }

    private void getObject(object sender, MoveObjectEventArgs e)
    {
    comboBox1.Text = (e.GetObject as string);
    }

  19. #19
    VIP آواتار Amir Oveisi
    تاریخ عضویت
    اسفند 1384
    محل زندگی
    هر جا که حال کنم - فعلا یزد
    پست
    2,604

    نقل قول: سوال در مورد دسترسی به یک object خاص

    نقل قول نوشته شده توسط wolf_majid مشاهده تاپیک
    این رو تست کرده بودم . فقط فرم اول باز شده از نوع فرم2 رو مقدارش را تغییر میده
    تست کنید
     Form2 frm2 = new Form2();
    frm2.Name = "frmTest";
    frm2.Show();
    ((Application.OpenForms["frmTest"] as Form2).Controls["comboBox1"] as ComboBox).Text = ":d";


    البته من از روش delegate و event استفاده می کنم
    کلا نگرفتم منظورتونو

  20. #20
    VIP آواتار Amir Oveisi
    تاریخ عضویت
    اسفند 1384
    محل زندگی
    هر جا که حال کنم - فعلا یزد
    پست
    2,604

    نقل قول: سوال در مورد دسترسی به یک object خاص

    نقل قول نوشته شده توسط wolf_majid مشاهده تاپیک
    روش مورد استفاده من برای انجام چنین کاری :

    1- تعریف کلاس زیر :

     public class MoveObjectEventArgs : EventArgs
    {
    /// <summary>
    ///
    /// </summary>
    /// <param name="obj">موضوع ارسالی</param>
    public MoveObjectEventArgs(object obj)
    {
    _object = obj;
    }

    /// <summary>
    /// شی مورد انتقال
    /// </summary>
    private object _object;

    /// <summary>
    /// شی ذخیره شده را بر می گرداند
    /// </summary>
    public object GetObject
    {
    get { return _object; }
    }
    }


    2- تعریف یک رخداد و صدا زدن آن در فرم فرستنده :

    public delegate void _SendObject(object sender, MoveObjectEventArgs e);
    public event _SendObject SendObject;

     private void button1_Click(object sender, EventArgs e)
    {
    Form2 frm2 = new Form2();
    frm2.Name = "frmTest";
    if (SendObject != null)
    SendObject(this, new MoveObjectEventArgs(":D"));
    frm2.Show();


    3- انجام تغییرات در فرم گیرنده :

     public Form2()
    {
    InitializeComponent();
    (Application.OpenForms["Form1"] as Form1).SendObject += getObject;
    }

    private void getObject(object sender, MoveObjectEventArgs e)
    {
    comboBox1.Text = (e.GetObject as string);
    }
    این روش شما هنوز مشکل این که اگر فرم هدف در حال حاضر باز باشه رو حل نکرده. در ضمن این روش به نظر شما چه مزیتی نسبت به ارسال داده از طریق سازنده داره که در پست های قبلی ارسال شده بود؟

  21. #21
    کاربر دائمی آواتار F.zeinali
    تاریخ عضویت
    آبان 1389
    محل زندگی
    تهران
    پست
    243

    نقل قول: سوال در مورد دسترسی به یک object خاص

    نقل قول نوشته شده توسط Amir Oveisi مشاهده تاپیک
    این روش شما درسته ولی آیا به نظرتون محدودیت ایجاد نمی کنه؟
    سلام

    من اینجا یه constructor ایجاد کردم و فکر نمی کنم محدودیت ایجاد بکنه!!من می تونم به هر تعداد که لازم بود constructor بسازم و OverLoadهای Form رو بیشتر کنم.
    آیا به نظر شما این محدودیت هستش؟؟
    خوشحال میشم نظرتون رو بدونم.

  22. #22
    کاربر دائمی آواتار wolf_majid
    تاریخ عضویت
    آذر 1387
    محل زندگی
    اصفهان
    پست
    534

    نقل قول: سوال در مورد دسترسی به یک object خاص

    نقل قول نوشته شده توسط Amir Oveisi مشاهده تاپیک
    کلا نگرفتم منظورتونو
    اگر بیش از یک نمونه از یک فرم بسازید با روشی که شما گفتید فقط نمونه اول مقداردهی میشه

  23. #23
    VIP آواتار Amir Oveisi
    تاریخ عضویت
    اسفند 1384
    محل زندگی
    هر جا که حال کنم - فعلا یزد
    پست
    2,604

    نقل قول: سوال در مورد دسترسی به یک object خاص

    محدودیت اول:‌ حتما باید یک instance جدید از فرم مورد نظر بسازید تا بتونین داده مورد نظرتون رو ارسال کنید بهش. اگر قبلا یک instance از فرم مورد نظر وجود داشته باشه آیا بدون اینکه یک instance جدید ازش بسازید میتونین از این روش استفاده کنید؟
    محدودیت دوم: آیا برای ارسال هر نوع داده ای قراره یک overload‌ جدا برای سازنده ایجاد بشه؟
    محدودیت سوم: آیا برای ارسال داده به هر کنترل در فرم مقصد باید یک overload‌ جدید برای سازنده ایجاد بشه؟

  24. #24
    کاربر دائمی آواتار wolf_majid
    تاریخ عضویت
    آذر 1387
    محل زندگی
    اصفهان
    پست
    534

    نقل قول: سوال در مورد دسترسی به یک object خاص

    نقل قول نوشته شده توسط Amir Oveisi مشاهده تاپیک
    این روش شما هنوز مشکل این که اگر فرم هدف در حال حاضر باز باشه رو حل نکرده. در ضمن این روش به نظر شما چه مزیتی نسبت به ارسال داده از طریق سازنده داره که در پست های قبلی ارسال شده بود؟
    حالا من منظور شما رو درست نگرفتم

    این روش شما هنوز مشکل این که اگر فرم هدف در حال حاضر باز باشه رو حل نکرده
    یعنی چی؟
    اصلا" تستش کردید ؟
    هر تعداد که میخواد از فرم هدف باز باشه بازم جواب میده ( تست کردم )

    در ضمن این روش به نظر شما چه مزیتی نسبت به ارسال داده از طریق سازنده داره که در پست های قبلی ارسال شده بود؟
    فکر کنم اگر تستش کنید متوجه بشید
    ببینید تا جایی که من متوجه شدم توی حالت ارسال داده باید چک می کردیم که آیا داده ارسال شده یا خیر , فرستنده و گیرنده کدومند که توی حالت پویا یک کمی سخت میشد
    البته من هم تازه از این روش استفاده می کنم ولی به نظرم خیلی قدرت مانورش به روش های دیگه بیشتره مثل همین که میدونیم فرستنده داده کدوم شی ئه

  25. #25

  26. #26
    کاربر دائمی آواتار wolf_majid
    تاریخ عضویت
    آذر 1387
    محل زندگی
    اصفهان
    پست
    534

    نقل قول: سوال در مورد دسترسی به یک object خاص

    نقل قول نوشته شده توسط Amir Oveisi مشاهده تاپیک
    یک سناریو بگید که توش نیاز باشه از یک فرم دو تا instance وجود داشته باشه در یک لحظه
    من منظور شما رو از "اگر فرم ۲ از قبل باز بوده باشه چی؟" بد گرفتم

    حق با شماست

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

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