我正在使用C#应用程序,该应用程序在youtube上搜索歌曲名称(使用youtube api)并显示数据,我有一个自定义的SongItem(UserControl),并将它们添加到FlowLayoutControl中。我在UserControl中添加了一个“收藏夹”按钮,我需要将其添加到另一个FlowLayoutControl(即收藏的歌曲列表)中,但无法正常工作,在UserControl中不能有多个基类,并添加Form1的公共方法不能解决我的问题((不添加任何内容,请使用列表框对其进行尝试,但不进行任何操作)。 如果有人至少可以提出一些建议,我真的会被困在这里。
这是我的SongItem
Options -Indexes
ServerSignature Off
RewriteEngine On
RewriteBase /
# Redirect to index.php
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_METHOD} !HEAD
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# Enable compression
<FilesMatch "\.(html?|txt|css|js|php|pl)$">
SetOutputFilter DEFLATE
</FilesMatch>
# Caching control
<IfModule mod_headers.c>
Header set Cache-Control "max-age=86400"
Header set Pragma "max-age=86400"
Header set Expires 0
</IfModule>
# Redirect to https
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
# Redirect from www.
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*) https://%1/$1 [L,R=301]
}
这是Form1代码
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^(.+)/$
RewriteRule ^(.+)/$ /$1 [R=301,L]
显示消息,但没有其他内容
我从另一个类添加了SongItem
RewriteCond %{REQUEST_URI} ^([^.]+)/$
RewriteRule ^[^.]+/$ /%1 [QSA,L]
答案 0 :(得分:0)
我通过创建EventHandler解决了该问题
主要是我创建了这个公共空白
public void FavoriteWasClicked(object sender, EventArgs e) {
if (sender is SongItem)
{
songList2.AddSong(((SongItem)sender).SongData);
}
}
在Form1上添加了负载(songList1是已经在Form1设计器中添加的FlowLayoutPanel)
songList1.List_FavoriteWasClicked += FavoriteWasClicked;
我将此行添加到我创建的FlowLayoutPanel类中
public event EventHandler<EventArgs> List_FavoriteWasClicked;
以及在创建新控件(其中的SongItems)时(FlowLayoutPanel的其余部分)
public void AddSong(SongData song)
{
SongItem songItem = new SongItem { SongData = song };
songItem.FavoriteWasClicked += List_FavoriteWasClicked; ()
this.Controls.Add(songItem);
}
现在我在SongItem上创建了自定义事件
public event EventHandler<EventArgs> FavoriteWasClicked;
在按钮上,我想按一下该按钮以添加到收藏夹列表中,我添加了以下内容
FavoriteWasClicked(this, EventArgs.Empty);
现在,当我按下按钮将一首歌曲添加到喜欢/收藏列表时,它实际上是在添加它。