فراخوانی رویداد Click دکمه در Form Load
من یک Button دارم که یکسری کد ها داخلش هست میخواستم این رویداد کلیک این button رو در ابتدای Loaded فرمم صداش کنم
Btn_Cleantion_Click(sender, e);
اما این اتفاق نمیفته یعنی این رویداد رو انجام نمیده خودم باید دستی روی دکمه کلیک کنم تا عمل کنه
private void Window_Loaded(object sender, RoutedEventArgs e)
{
Btn_Cleantion_Click(sender, e);
}
لطفا راهنمایی کنید باتشکر
پاسخ هوش مصنوعی
به نظر می رسد که شما برای صدا زدن متد کلیک دکمه در رویداد بارگذاری فرم از پارامترهای نادرستی استفاده کرده اید. در واقع، متد `Btn_Cleantion_Click` نیاز به یک منبع (sender) و یک رویداد (e) دارد، و شما در اینجا از همان مقادیر `sender` و `e` که از رویداد بارگذاری فرم گرفته اید استفاده می کنید که ممکن است کار نکند.
برای حل این مشکل، شما می توانید به سادگی از `null` برای پارامتر `sender` و یک رویداد فرضی برای `e` استفاده کنید. به این صورت:
private void Window_Loaded(object sender, RoutedEventArgs e)
{
Btn_Cleantion_Click(null, new RoutedEventArgs());
}
با این تغییر، رویداد کلیک دکمه بدون نیاز به کلیک دستی روی دکمه فعال خواهد شد.
شما به پارامتر ورودی 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');
}
این رو بررسی کنید این روش کار میکنه
محتوای رویداد کلیک :
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);
}

در اجرا :

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);
}

ببینید ایجا اجرا میکنه اما نمیدونم چرا توی پروژه دیگه اجرا نمیشه ؟
- دسترسی به پکیج های nuget در زمان قطع نت بین الملل
- نمایش آخرین ردیف دیتاگیرید موقع لود در wpf
- مشکل اینترنت جهانی و عدم دسترسی به cdnjs.cloudflare.com
- مشکل در نصب sql server 2022
- جلوگیری از اد شدن خودکار در گروه و کانال تلگرام
- کم کردن حجم فیلم توسط کد در Asp net core
- چه کسانی استوری تلگرام را می بینند ؟
- برای کسب و کار تلگرام پرمیوم بهتره یا واتس اپ بیزینس ؟
- جلوگیری از انتشار غیرمجاز مطالب در کانال های تلگرامی
- تفاوت های تلگرام و واتس اپ چیست ؟
- مشکل تاریخ شمسی در سی شارپ
- نمایش گزارش stimulsoft روی کلاینت
- تفاوت های سی شارپ 8 با نسخه های قبلی چیه؟
- انتخاب چند سطر دلخواه توسط چک باکس در DataGrid و محاسبه جمع سطرهای انتخاب شده
- نمایش نوتیفکیشن در سی شارپ
- ارسال پارامتر از سی شارپ به استیمول سافت
- عدم نمایش عکس در دیتاگرید ویو در wpf
- Library Animation برای کنترلهای WPF
- مشکل در تغییر مقدار Text کنترل RibbonBar در کامپوننت DevExpress
- قرار دادن مقادیر ارسالی یک ستون از جدول به صورت سطری در استیمول