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

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

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

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

    سلام دوستان.
    من یک فرم جستجو دارم که توش یه دیتاگرید هست.وقتی کاربر از فرم دیگه ای به این فرم مراجعه کنه و روی یکی از سطرها کلیک کنه، اطلاعات این سطر از دیتاگرید به فرم قبلی بازگشت داده میشه.
    حالا آیا راهی داره که کاربر از هر فرمی که وارد این فرم جستجو میشه، اطلاعات دیتاگرید به همون فرم برگرده؟

  2. #2
    کاربر دائمی آواتار رامین مرادی
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    آذربایجان
    پست
    1,961

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

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

  3. #3
    کاربر تازه وارد
    تاریخ عضویت
    بهمن 1385
    محل زندگی
    Babol
    پست
    80

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

    اگه میشه یه مثال(کدنویسی) بزنی ممنون میشم

  4. #4

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

    یک راهش اینه که مثل opendialog باهاش برخورد کنید
    یک کلاس ایجاد تا وقتی کاربر یک سطر رو انتخاب کرد مقادیر انتخاب شده رو در خودش نگه داره
    و از فرم مبدا بصورت showdialog بازش کنین وقتی فرم بشته شد برین او کلاس رو چک کنین ببینین اطلاعات داره یا نه اگه اطلاعات داشت بعنی کاربر اون سطر رو انتخاب کرده و از اطلاعات استفاده میکنین

  5. #5
    کاربر دائمی آواتار حسین.کاظمی
    تاریخ عضویت
    مرداد 1392
    محل زندگی
    Microsoft Visual Studio
    پست
    652

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

    راه و روش انتقال اطلاعات بین فرم هاتون را میگید بیزحمت تا بهتر بشه راهنماییتون کرد.

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

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

    نقل قول نوشته شده توسط حسین.کاظمی مشاهده تاپیک
    راه و روش انتقال اطلاعات بین فرم هاتون را میگید بیزحمت تا بهتر بشه راهنماییتون کرد.
    من ازین کد دارم استفاده میکنم.
    برای هر فرمی، یه فرم جستجوی جداگانه طراحی کردم. در صورتی که میشه برای همه ی فرم ها از یک فرم جستجو استفاده کرد.






    private void dataGridViewX1_CellClick(object sender, DataGridViewCellEventArgs e)
    {


    VarizBardashtFrm vrzbrdfrm = new VarizBardashtFrm();
    vrzbrdfrm.txtshhesab.Text = Convert.ToString(dataGridViewX1.CurrentRow.Cells["shhesab"].Value);
    vrzbrdfrm.lblSahebhesab.Text = Convert.ToString(dataGridViewX1.CurrentRow.Cells["name"].Value) + " " + Convert.ToString(dataGridViewX1.CurrentRow.Cells["family"].Value);
    this.Hide();
    vrzbrdfrm.ShowDialog();


    }

  7. #7

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

    بهترین و حرفه ای ترین روش استفاده از custom event هستش، یعنی شما یه ایونت مینویسین که هر موقع روی سطر موردنظر روی دیتاگریدویو کلیک شد، فرم جستجو بسته بشه و اطلاعات موردنیاز در قالب یک Custom EventArgs به فرم دنبال کننده (همون فرمی که میخواین اطلاعات بهش بازگشت داده بشه) پاس بدین

    به فرم یا کلاسی که ایونت رو داخلش تعریف میکنیم اصطلاحا میگیم publisher یا انتشار دهنده و به فرم و یا کلاسی که میخوایم اطلاعات بازگشتی از ایونت رو دریافت کنیم اصطلاحا میگیم subscriber یا دنبال کننده

  8. #8
    کاربر دائمی آواتار رامین مرادی
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    آذربایجان
    پست
    1,961

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

    نقل قول نوشته شده توسط mr.sirwan مشاهده تاپیک
    بهترین و حرفه ای ترین روش استفاده از custom event هستش، یعنی شما یه ایونت مینویسین که هر موقع روی سطر موردنظر روی دیتاگریدویو کلیک شد، فرم جستجو بسته بشه و اطلاعات موردنیاز در قالب یک Custom EventArgs به فرم دنبال کننده (همون فرمی که میخواین اطلاعات بهش بازگشت داده بشه) پاس بدین

    به فرم یا کلاسی که ایونت رو داخلش تعریف میکنیم اصطلاحا میگیم publisher یا انتشار دهنده و به فرم و یا کلاسی که میخوایم اطلاعات بازگشتی از ایونت رو دریافت کنیم اصطلاحا میگیم subscriber یا دنبال کننده
    راجب این موضوع بیشتر توضیح بدید من خودم مشتاق شدم. اولین باره به گوشم خورد.(خودم با متغییر های ایستا تا بحال اطلاعات رو پاس میدادم)

  9. #9
    کاربر دائمی آواتار رامین مرادی
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    آذربایجان
    پست
    1,961

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

    نقل قول نوشته شده توسط Iman7228 مشاهده تاپیک
    اگه میشه یه مثال(کدنویسی) بزنی ممنون میشم
    اینم تقریبا ساده ترین روش
    فایل های ضمیمه فایل های ضمیمه

  10. #10
    کاربر تازه وارد
    تاریخ عضویت
    بهمن 1385
    محل زندگی
    Babol
    پست
    80

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

    نقل قول نوشته شده توسط mr.sirwan مشاهده تاپیک
    بهترین و حرفه ای ترین روش استفاده از custom event هستش، یعنی شما یه ایونت مینویسین که هر موقع روی سطر موردنظر روی دیتاگریدویو کلیک شد، فرم جستجو بسته بشه و اطلاعات موردنیاز در قالب یک Custom EventArgs به فرم دنبال کننده (همون فرمی که میخواین اطلاعات بهش بازگشت داده بشه) پاس بدین

    به فرم یا کلاسی که ایونت رو داخلش تعریف میکنیم اصطلاحا میگیم publisher یا انتشار دهنده و به فرم و یا کلاسی که میخوایم اطلاعات بازگشتی از ایونت رو دریافت کنیم اصطلاحا میگیم subscriber یا دنبال کننده
    رفتم دنبالش ببینم چیه.ممنون

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

  11. #11

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

    برای انجام اینکار توسط ایونت باید سه مرحله انجام بدیم:
    1. تعریف Delegate
    2. تعریف ایونت بر اساس اون دلیگیت
    3. فراخوانی ایونت

    خب برای مرحله اول لازمه که توی فرم جستجو (کلاس پابلیشر یا انتشاردهنده) همسطح کلاس، یه delegate با signature زیر تعریف کنیم:
    public delegate void SearchEventHandler(object sender, EventArgs args);

    پس ایونتی که استفاده میکنیم باید از این signature تبعیت کنه، یعنی ریترن تایپش void باشه، دوتا پارامتر بگیره، اولی از جنس ابجکت و مشخص کننده کلاسیه که این ایونت رو ازش فراخونی میکنیم، دومین پارامتر از جنس کلاس EventArgs که شامل دیتا و اطلاعاتی میشه که لازم داریم (شما باید یه کلاس کاستوم برای eventargs بنویسین که اون اطلاعاتی که لازم دارین رو در خودش داشته باشه، در ادامه این رو هم توضیح میدم)

    حالا میایم داخل بدنه کلاس فرم جستجو یه نمونه ایونت از این دلیگیت میسازیم، بشکل زیر:

    public event SearchEventHandler ItemSelected;

    مرخله دوم هم تموم شد.

    حالا میرسیم به مرحله سوم، برای فراخوانی ایونت، باید یه متد تعریف کنیم که مسئول فراخوانی ایونت هستش، پس یه متد با signature زیر تعریف میکنیم:
    protected virtual void OnItemSelected(EventArgs args)
    {
    if(ItemSelected != null)
    {
    ItemSelected(this, args);
    }
    }

    توضیح متد بالا اینه که اگر اون ایونتی که تعریف کردیم دنبال کننده ای داشته باشه (یعنی توی کلاس یا فرم دیگه ای این ایونت رو فراخوانی کرده باشیم یا اصطلاحا ایونتمون فایر(fire) شده باشه) مخالف null میشه و داخل بدنه if اون رو دقیقا مثل یک متد معمولی فراخوانی میکنیم تا دنبال کننده ها رو از این ایونت باخبر کنیم، اما باید از اون signature که برای دلیگیت تعریف کردیم تبعیت کنه، پس پارامتر اول میشه کلاسی که ایونت رو فایر میکنه یعنی کلاس جاری (فرم جستجو)، پارامتر دوم هم شامل اطلاعات موردنیازمون هستش.

    اگر ایونتمون دنبال کننده ای نداشته باشه، ایونت برابر null خواهد بود.

    حالا متد OnItemSelected رو داخل رویداد دابل کلیک دیتاگرید ویو به این شکل فراخوانی میکنیم و اطلاعاتی که لازم داریم رو از طریق ابجکت args به متد OnItemSelected پاس میدیم

    OnItemSelected(new EventArgs { AccountNumber = Convert.ToString(dataGridViewX1.CurrentRow.Cells["shhesab"].Value), AccountOwner = // get the Account Owner });

    الان ما به فرم جستجومون (که ایونت رو داخل اون تعریف کردیم) publisher یا انتشاردهنده میگیم و میتونیم از این ایونت توی هر فرمی که لازم باشه به راحتی استفاده کنیم، نحوه استفاده از این ایونت به شکل زیره، فرضا توی فرم 1 هستیم و لازم داریم که فرم جستجو رو باز کنیم و از ایتمی که توی فرم جستجو انتخاب میشه استفاده کنیم:

    var searchingForm = new frmSearchingForm();
    searchingForm.ItemSelected += frmSearchingForm_ItemSelected;

    private void frmSearchingForm_ItemSelected(object sender, EventArgs args)
    {
    // now your data is stored in args
    }

    توی کد بالا به ایونت هندلر frmSearchingForm_ItemSelected که توی فرم 1 داره ایونت ItemSelected توی فرم جستجو رو فراخوانی میکنه میگیم subscriber یا دنبال کننده اون ایونت (به تبع اون به کلاس فرم 1 هم دنبال کننده میگیم)

    کار تمومه.

    اما حالا درمورد اون کلاس custom eventargs که گفتم، باید یه کلاس تعریف کنید که از کلاس EventArgs ارث بری میکنه، و براش پراپرتی هایی که لازم دارین رو تعریف کنین:

    public class SearchEventArgs:EventArgs
    {
    public string AccountNumber {get; set;}
    public string AccountOwner {get; set;}
    }

    و برای استفاده از این کلاس باید توی کد های بالا، به جای تمامی EventArgs ها از کلاس SearchEventArgs استفاده کنید.

    نکته دیگه اینکه شما به جای تعریف یک دلیگیت میتونین از دلیگیت تعریف شده توی خود دات نت استفاده کنین، پس مرحله اول حذف میشه و فقط از مرحله دوم کار رو شروع میکنین، یکی از این دلیگیت های پیش فرض دلیگیت EventHandler هستش که باید از نوع جنریکش استفاده کنید و نوع SearchEventArgs رو بهش بدین، به این صورت:

    public event EventHandler<SearchEventArgs> ItemSelected;

    اگر از دلیگیت پیشفرض خود دات نت استفاده کنین، میتونین اون دلیگیتی که خودمون تعریف کردیم رو پاک کنین و مستقیما ایونت رو بسازین

    اگر بازم مشکلی داشتین بگین راهنمایی کنم

  12. #12
    کاربر تازه وارد
    تاریخ عضویت
    بهمن 1385
    محل زندگی
    Babol
    پست
    80

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

    ممنون از اطلاعات و راهنمایی خوبتون.
    آیا نمونه برنامه ای هست که کدشو بخونم؟؟؟

  13. #13

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

    نقل قول نوشته شده توسط Iman7228 مشاهده تاپیک
    ممنون از اطلاعات و راهنمایی خوبتون.
    آیا نمونه برنامه ای هست که کدشو بخونم؟؟؟
    الان این توضیحات رو الکی نوشتم یعنی؟

  14. #14
    کاربر تازه وارد
    تاریخ عضویت
    بهمن 1385
    محل زندگی
    Babol
    پست
    80

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

    نقل قول نوشته شده توسط mr.sirwan مشاهده تاپیک
    الان این توضیحات رو الکی نوشتم یعنی؟
    خدا نکنه.دست و پنجه ت درد نکنه. نکته ای که هست اینه که من اونقدی که شما استادی، وارد نیستم. رو همین حساب باید رو یه سمپل هم کار کنم و کدهاشو بخونم تا دستم بیاد.عذرخواهی میکنم

  15. #15

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

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

  16. #16

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

    اینم نمونه برنامه که قولشو داده بودم

    SearchUsingEvent.rar

  17. #17
    کاربر تازه وارد
    تاریخ عضویت
    بهمن 1385
    محل زندگی
    Babol
    پست
    80

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

    نقل قول نوشته شده توسط mr.sirwan مشاهده تاپیک
    اینم نمونه برنامه که قولشو داده بودم

    SearchUsingEvent.rar
    لطف و محبتت زیاد برادر

  18. #18
    کاربر تازه وارد
    تاریخ عضویت
    بهمن 1385
    محل زندگی
    Babol
    پست
    80

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

    من از روش ارسال اسم فرم ها استفاده کردم.بعدش شرط گذاشتم که اگه اسم فرم ارجاعی برابر با لیبل موردنظر باشه، اطلاعات رو به همون فرم ارسال کنه. به اینصورت :

    private void SearchBTN_Click(object sender, EventArgs e)
    {
    SelectFrm slcfrm= new SelectFrm ();
    this.Hide();
    slcfrm.label1.Text = this.Name.ToString();
    slcfrm.ShowDialog();
    }


    اینهم برای بازگشت به فرم ارجاعی


    private void dataGridViewX1_CellClick(object sender, DataGridViewCellEventArgs e)
    {
    if (label1.Text == "Form1")
    {
    Form1 frm1 = new Form1();
    frm1.textbox1.Text = Convert.ToString(dataGridViewX1.CurrentRow.Cells[1].Value);
    this.Hide();
    frm1.ShowDialog();
    }
    else if (label1.Text == "Form2")
    {
    Form2 frm2 = new Form2();
    frm2.textbox1.Text = Convert.ToString(dataGridViewX1.CurrentRow.Cells[1].Value);
    this.Hide();
    frm2.ShowDialog();
    }
    }

  19. #19
    کاربر دائمی آواتار shahryari
    تاریخ عضویت
    اسفند 1390
    محل زندگی
    آذربايجان
    سن
    40
    پست
    1,236

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

    سلام

    در فرم 1
            private void button1_Click(object sender, EventArgs e)
    {
    Form2 f = new Form2();
    if (f.ShowDialog() == System.Windows.Forms.DialogResult.OK)
    {
    string s = f.textBox1.Text;
    }
    }



    در فرم 2
            private void button1_Click(object sender, EventArgs e)
    {
    this.DialogResult = System.Windows.Forms.DialogResult.OK;
    }


    modifiers تکست باکس فرم 2 رو پابلیک کن

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

  1. حرفه ای: استفاده از يك فرم براي فيلتر و سورت تمام گزارشات
    نوشته شده توسط pmoshir در بخش Access
    پاسخ: 3
    آخرین پست: سه شنبه 06 مهر 1395, 12:27 عصر
  2. حرفه ای: استفاده از یک فرم برای چندیدن کار با استفاده از Generic یا همون T ??
    نوشته شده توسط mohsen_popo در بخش C#‎‎
    پاسخ: 3
    آخرین پست: سه شنبه 14 آبان 1392, 20:21 عصر
  3. پاسخ: 2
    آخرین پست: سه شنبه 10 خرداد 1390, 23:57 عصر
  4. استفاده از یک فرم در فرمی دیگر
    نوشته شده توسط برنامه نویس جوان در بخش C#‎‎
    پاسخ: 10
    آخرین پست: سه شنبه 26 دی 1385, 00:31 صبح
  5. استفاده از یک فرم در پروزه دیگر
    نوشته شده توسط rohollahmahmoodiany در بخش ASP.NET Web Forms
    پاسخ: 4
    آخرین پست: پنج شنبه 29 اردیبهشت 1384, 13:43 عصر

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

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