C#UserControl按钮单击可将项目从form1添加到列表框

时间:2018-08-04 17:08:09

标签: c# visual-studio

我正在使用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]

1 个答案:

答案 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);

现在,当我按下按钮将一首歌曲添加到喜欢/收藏列表时,它实际上是在添加它。