订阅并捕捉子控件点击事件
Subscribe and Catch child control click event
我有一个包含自定义列表控件的表单。在此列表控件中,是一个名为 flpListBox 的 flexlayout 控件,其中包含结果行。
我在捕获每个项目的点击事件时遇到问题。我可以 MessageBox 发件人对象键(在本例中为歌曲名称),每行点击都是正确的,但我想在父主表单标签 lblNowPlaying.Text 上显示点击结果歌曲名称
在 ListControl 中,我有这个
public void Add(string Song, string Artist, string Album)
{
var c = new ListControlItem();
c.Name = "item" + (flpListBox.Controls.Count + 1);
c.Margin = new Padding(0);
c.Song = Song;
c.Artist = Artist;
c.Album = Album;
c.SelectionChanged += SelectionChanged;
c.Click += ItemClicked;
flpListBox.Controls.Add(c);
SetupAnchors();
}
public event ItemClickEventHandler ItemClick;
public delegate void ItemClickEventHandler(object sender, int Index);
private void ItemClicked(object sender, EventArgs e)
{
ListControlItem c = (ListControlItem)sender;
//MessageBox.Show(c.Song);
ItemClick?.Invoke(this, flpListBox.Controls.IndexOfKey(c.Song));
//ItemClick?.Invoke(this, flpListBox.Controls.IndexOfKey((sender as ListControlItem).Song));
}
在父表单 Form1 中我有
InitializeComponent();
ListControl1.ItemClick += new ListControl.ItemClickEventHandler(ListControl1_ItemClick);
private void ListControl1_ItemClick(object sender, int Index)
{
MessageBox.Show("event caught");
lblNowPlaying.Text = "Now Playing: item index " + Index;
}
ListControl1.ItemClick 的引用正确地返回了,所以我不明白为什么我不能从子控件中捕获歌曲名称,并发送到父表单标签。
也许有人能指出我正确的方向,非常感谢
我分配了错误的控件名称,在意识到这一点并做出正确的更改后代码按预期工作。
我有一个包含自定义列表控件的表单。在此列表控件中,是一个名为 flpListBox 的 flexlayout 控件,其中包含结果行。
我在捕获每个项目的点击事件时遇到问题。我可以 MessageBox 发件人对象键(在本例中为歌曲名称),每行点击都是正确的,但我想在父主表单标签 lblNowPlaying.Text 上显示点击结果歌曲名称
在 ListControl 中,我有这个
public void Add(string Song, string Artist, string Album)
{
var c = new ListControlItem();
c.Name = "item" + (flpListBox.Controls.Count + 1);
c.Margin = new Padding(0);
c.Song = Song;
c.Artist = Artist;
c.Album = Album;
c.SelectionChanged += SelectionChanged;
c.Click += ItemClicked;
flpListBox.Controls.Add(c);
SetupAnchors();
}
public event ItemClickEventHandler ItemClick;
public delegate void ItemClickEventHandler(object sender, int Index);
private void ItemClicked(object sender, EventArgs e)
{
ListControlItem c = (ListControlItem)sender;
//MessageBox.Show(c.Song);
ItemClick?.Invoke(this, flpListBox.Controls.IndexOfKey(c.Song));
//ItemClick?.Invoke(this, flpListBox.Controls.IndexOfKey((sender as ListControlItem).Song));
}
在父表单 Form1 中我有
InitializeComponent();
ListControl1.ItemClick += new ListControl.ItemClickEventHandler(ListControl1_ItemClick);
private void ListControl1_ItemClick(object sender, int Index)
{
MessageBox.Show("event caught");
lblNowPlaying.Text = "Now Playing: item index " + Index;
}
ListControl1.ItemClick 的引用正确地返回了,所以我不明白为什么我不能从子控件中捕获歌曲名称,并发送到父表单标签。
也许有人能指出我正确的方向,非常感谢
我分配了错误的控件名称,在意识到这一点并做出正确的更改后代码按预期工作。