دسته بندی ها
12:15 1399/08/29

فراخوانی رویداد Click دکمه در Form Load

مشخصات سوال کننده :
کاربر : mojtabahakimian     امتیاز کاربر : 155     رتبه کاربر : 10
دسته بندی : WPF سی شارپ

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 5830
1 نظر
mojtabahakimian : جالب اینجاست که توی حالت Trace میره این رویداد رو انجام ملیده ولی عمل نمیکنه حتی دوبار گذاشتم این رویداد رو ولی باز برای اینکه کار کنه باید دستی خودم روی دکمه کلیک کنم

امتیاز کاربر : 155   رتبه کاربر : 10   تاریخ ثبت : 12:20 1399/08/29
پاسخ دهنده : fateme 14:22 1399/08/29

شما به پارامتر ورودی e که EventHandler یا همون معرف رویداد هست توجه نکردید. ببینید شما وقتی روی یک دکمه کلیک می کنید رویداد Btn_Click صدا زده میشه. اما این رویداد یک ورودی به نام e داره.

private void Btn_Cleantion_Click(sender, e)
{
   ...
}

خب این پارامتر e در واقع وقتی مقداردهی میشه (یا به عبارتی initial میشه) که روی دکمه کلیک بشه. یعنی بعد از کلیک روی دکمه e مقدار میگیره و Event مربوطه صدا زده میشه. اما شما وقتی به شکل زیر عمل می کنید پارامتر e مقداری نداره و به عبارتی رویداد هم اجرا نمیشه.

private void Window_Loaded(object sender, RoutedEventArgs e)
{
     //No value For e
     Btn_Cleantion_Click(sender, e);
}

 

استفاده از متد در سی شارپ

اگر میخواید هنگام Load فرم عملیات خاصی رو انجام بدید میتونید یک متد بسازید و اون متد را درون Load فرم صدا بزنید.

private void Window_Loaded(object sender, RoutedEventArgs e)
{
     myMethod();
}

private void myMethod()
{
    MessageBox.Show('Hello');
}

 

به این پاسخ امتیاز بدهید    1
امتیاز: 1617 رتبه: 2
1 نظر
mojtabahakimian : سپاس ولی چطور میتونم همون رویداد Click بع هبه عنوان متدی استفاده کنم که کلیک شده باشه ؟

امتیاز کاربر : 155   رتبه کاربر : 10   تاریخ ثبت : 07:39 1399/08/29
پاسخ دهنده : mojtabahakimian 19:59 1399/08/29

این رو بررسی کنید این روش کار میکنه 

محتوای رویداد کلیک :

  private void Button_1_Click(object sender, RoutedEventArgs e)
        {
            Label_Message.Content = "You Clicked Me";
        }

صدا زدن اون در Loaded Window

      private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            Button_1_Click(sender,  e);
        }

 

در اجرا :

به این پاسخ امتیاز بدهید    0
امتیاز: 155 رتبه: 10
پاسخ دهنده : mojtabahakimian 20:02 1399/08/29
        private void Button_1_Click(object sender, RoutedEventArgs e)
        {
            MessageBox.Show("You Clicked Me");
            //Label_Message.Content = "You Clicked Me";
        }


     private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            Button_1_Click(sender,  e);
        }

 

ببینید ایجا اجرا میکنه اما نمیدونم چرا توی پروژه دیگه اجرا نمیشه ؟

به این پاسخ امتیاز بدهید    0
امتیاز: 155 رتبه: 10
1 نظر
mojtabahakimian : من بدون کلیک کردن , توی لود فروم خودش متد کلیک رو فراخوانی میکنه

امتیاز کاربر : 155   رتبه کاربر : 10   تاریخ ثبت : 08:03 1399/08/29
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود