دسته بندی ها
13:17 1398/09/07

کار با رویداد SelectedDateChanged در کامپوننت تاریخ شمسی در سی شارپ

مشخصات سوال کننده :
کاربر : hamid_b     امتیاز کاربر : 510     رتبه کاربر : 4
دسته بندی : سی شارپ WPF Asp.net Web Form

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 2927
پاسخ دهنده : fateme 13:31 1398/09/07

معمولا کامپوننت های تاریخ و سایر کامپوننت ها یک event برای این منظور باید داشته باشن. اما اگر این رویداد وجود نداره راهکارهایی هست که میتونید انجام بدید.

یکی از راهکارها این هست که یک متغیر از نوع bool تعریف کنید و در ابتدا مقدار اون رو false قرار بدید. این متغیر رو به صورت عمومی در بالای کلاس خودتون تعریف کنید 

 

   bool checkDate = false;

خب حالا در رویداد SelectedDateChanged کنترل کنید که اگر مقدار این متغیر true هست باید دستورات بدنه این رویداد اجرا بشن. به قطعه کد زیر دقت کنید

 

   private void persiandateTime_SelectedDateChanged(object sender, RoutedEventArgs e)
        {
            if (checkDate == true)
            {
                MessageBox.Show("123");
            }
        }

 

در دستور بالا فقط در صورتی پیغام 123 نمایش داده میشه که متغیر checkDate برابر با true باشه. و چون موقعی که فرم Load میشه این متغیر برابر با false هست پس دیگه در اون لحظه اجرا نمیشه. اما حالا باید راه حلی داشته باشید که چجوری این متغیر رو true کنیم تا وقتی تاریخ تغییر میکنه true بشه.

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

 

 private void PersiandateTime_MouseMove(object sender, MouseEventArgs e)
    {
      checkDate = true;
    }

 

در دستور بالا به محض اینکه ماو روی کنترل تاریخ شمسی در Wpf قرار میگیره متغیر checkDate برابر میشه با true و از این ببعد دستورات اون اجرا میشن.

برای کسب اطلاعات بیشتر در مورد این کار توصیه می کنم این لینک رو مطالعه بفرمایید.

به این پاسخ امتیاز بدهید    0
امتیاز: 1617 رتبه: 2
پاسخ دهنده : Sowgandi 23:57 1398/09/07

سلام. دوست عزیز این کامپوننتی که شما استفاده کردید در موقع لود فرم دستور SelectedDateChanged  به خودی خود اجرا نمیشه مگر اینکه شما مقدار پیش فرض اون رو خودتون تغییر بدید. اگه این کارو کردید بجای مقدار دادن به SelectedDate از تکست اون استفاده کنید و به اون مقدار بدید. 

مثال: 

calender.Text = MyDate.ToString();

در این حالت رویداد SelectedDateChanged  اجرا نمیشه.

ویرایش شده در پنج شنبه 7 آذر 1398 ساعت 23:59:02
به این پاسخ امتیاز بدهید    0
امتیاز: 871 رتبه: 3
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود