سوال در مورد CheckedListBox

MRHADI

Member
public event EventHandler CheckedListBoxChanged;

private Timer _checkedListBoxTimer;

private void Form1_Load(object sender, EventArgs e)
{
_checkedListBoxTimer = new Timer() { Interval = 1, Enabled = false };
_checkedListBoxTimer.Tick += checkedListBoxTimer_Tick;
checkedListBox1.ItemCheck += checkedListBox_ItemCheck;
checkedListBox2.ItemCheck += checkedListBox_ItemCheck;
}

private void checkedListBoxTimer_Tick(object sender, EventArgs e)
{
_checkedListBoxTimer.Enabled = false;
CheckedListBoxChanged?.Invoke(_checkedListBoxTimer.Tag, EventArgs.Empty);
}

private void checkedListBox_ItemCheck(object sender, ItemCheckEventArgs e)
{
_checkedListBoxTimer.Tag = sender;
_checkedListBoxTimer.Enabled = true;
}
سلام
اگر بخوام در اینجا مثلا button1.Click + رو اضافه کنم طوری که وقتی button1 کلیک میشه همون آیتم چک عمل کنه باید چطوری بنویسم؟
 

the_king

مدیرکل انجمن
سلام
اگر بخوام در اینجا مثلا button1.Click + رو اضافه کنم طوری که وقتی button1 کلیک میشه همون آیتم چک عمل کنه باید چطوری بنویسم؟
ItemCheck فقط زمانی رخ میده که تیک ها تغییری بکنه، بین رخداد کلیک و تغییر تیک ها ارتباطی نیست، پس Click نمیتونه باعث ItemCheck بشه.
دو تا راه حل اینه که یا باید تغییری در تیک ها بدهید تا خود ItemCheck رخ بده و یا متدی که با رخ دادن ItemCheck اجرا می کردید رو خودتون فراخوانی کنید.
اگر در رخداد کلیک دکمه تیک ها رو تغییر بدهید، رخداد ItemCheck رخ میده :
کد:
            button1.Click += (se, ev) =>
            {
                checkedListBox1.SetItemChecked(0, checkedListBox1.GetItemChecked(0) == false);
            };
همچنین می توانید متد checkedListBox_ItemCheck رو فراخوانی کنید، اما مساله اینجا است که وقتی checkedListBox_ItemCheck رو بخواهید فراخوانی کنید، باید تصمیم بگیرید که اون دو تا پارامتر (object sender, ItemCheckEventArgs e) اش چه مقادیری داشته باشند. نمی توانید همینطوری بگید اجرا بشه، بدون اینکه تصمیم بگیرید ItemCheckEventArgs اش چی باشه.
کد:
            button1.Click += (se, ev) =>
            {
                checkedListBox_ItemCheck(checkedListBox1, new ItemCheckEventArgs(0, CheckState.Unchecked, CheckState.Checked));
            };
 

جدیدترین ارسال ها

بالا