ارتباط بین تمام فرم ها در سی شارپ

بازدید371پست ها2آخرین فعالیت2 سال پیش
0
3

با سلام - من 10تا فرم دارم و هر فرم یک دیتا گرید می خوام در فرم اصلی از هر 10 تا فرم گزارشی داشته باشم مثلا تعداد کالا و نوع و غیره چطوری این کار رو انجام بدم راهنمایی بفرمایید امیدوارم منظورم رو رسونده باشم ارتباط بین 10 فرم و فرم اصلی ممنون میشم نمونه کد بذارید و بفرمایید کدوم قسمت باید بنویسم در ضمن نمیخوام باتن تعریف کنم میخوام زمانی که برنامه باز شد فرم اصلی همه اطلاعات 10 فرم دیگه را بصورت خودکار نمایش بده با تشکر فراوان

1

با سلام
این روش کاملا اشتباه و نشد است، که شما اطلاعات رو از 10 تا فرم دیگه بخوایین روی یک فرم نمایش بدین. اطلاعات باید روی یک پایگاه داده ذخیره شده باشه که هر کدوم از اون 10 فرم به صورت مجزا به اون پایگاه داده متصل بشن و شیء DataGridView که روی هر کدوم از اون فرما هست اطلاعات رو نمایش بده.
حالا اگه بخوایید یه خلاصه از اون 10 تا فرم روی یک فرم داشته باشید شما اطلاعات رو از روی پایگاه داده به صورت خلاصه میگیرید و داخل فرم اصلی نمایش میدید و اصلا کاری به اون 10 فرم ندارید.

0

من که منظورتون رو درست متوجه نشدم ولی یه مثال میزنم از یه چیزایی که خودم استفاده میکنم
من فرم اصلیم اسمش MainWindow هست، یک فرم هم دارم به نام WinAddUnit (دلایل اسم ها متناسب با نرم افزار خودم هست). توی فرم اصلیم یک سری اطلاعات دارم که استفاده کردم مثلا

  lblpersianday.Content = persiancalander.SelectedDate.PersianDayOfWeek;
            lblday.Content = persiancalander.SelectedDate.Day;
            lblmonth.Content = persiancalander.SelectedDate.MonthAsPersianMonth;
            lblyear.Content = persiancalander.SelectedDate.Year;
            lblhour.Content = DateTime.Now.Hour;
            lblmin.Content = DateTime.Now.Minute;

و یک سری اطلاعات دیگه که توی این فرم از persiancalander استفاده کردم.
حالا میخوام توی اون یکی فرمم از همین persiancalandar که توی فرم اصلیم هست بدون اینکه به فرم جدیدم اضافش کنم استفاده کنم.
از این روش استفاده میکنم: توی قسمت window_loaded برای فرم جدیدم این کد رو مینویسم

 MainWindow main = new MainWindow();
lblday.Content = main.persiancalander.SelectedDate.Day;
            lblmonth.Content = main.persiancalander.SelectedDate.MonthAsPersianMonth;
            lblyear.Content = main.persiancalander.SelectedDate.Year;
            lblhour.Content = DateTime.Now.Hour;
            lblmin.Content = DateTime.Now.Minute;

اینجوری من یک بار فرم اصلی رو یه جورایی صدا زدم و اسم main رو بهش دادم از اونجا به بعد از قابلیت persiancalandar که توی فرم اصلی بوده استفاده کردم.
امیدوارم تونسته باشم کمک کرده باشم.

سوال برنامه نویسی دارید؟

ندونستن عیب نیست، نپرسیدن چرا!

خوش آمدید

برای طرح سوال، ایجاد بحث و فعالیت در سایت نیاز است ابتدا وارد حساب کاربری خود شوید. در صورتی که هنوز عضو سایت نیستید میتوانید در عرض تنها چند ثانیه ثبت نام کنید.