如何调用在c#

时间:2018-05-16 20:09:38

标签: winforms

首先,非常感谢那些提出问题/回答问题的人。你能够把我弄到这一步。 我想通过挑战来帮助一位年轻的比利时企业家,建立一个媒体管理软件,在巨大的LED屏幕上显示各种媒体类型(图像,视频,链接,文本)。 我在EDI工作时的编码经验有限。 我的问题是我根据数据库中的播放列表数量动态创建播放列表(见屏幕截图),但是按下播放按钮时我无法触发播放右侧播放列表。 警告,我的代码是noob代码。 PlayList ScreenShot

 Label playListLbl = new Label();
 GroupBox playListGrp = new GroupBox();

 public GroupBox addplayListGrp(int i, int start, int end)
    {

        GroupBox playListGrp = new GroupBox();
        playListGrp.Name = "playListGrp"+ Convert.ToString(1 + i);
        playListGrp.Text = "Play list " + Convert.ToString(1 + i);
        playListGrp.Font = new Font("Century Gothic", 12F, 
        FontStyle.Regular, GraphicsUnit.Point, ((byte)(0)));
        playListGrp.Width = 425;
        playListGrp.Height = 525;
        playListGrp.Margin = new Padding(1);
        playListGrp.Location = new Point(start, end);
        return playListGrp;
        }
   Button addPlayBtn(int i)
        {
        Button PlayBtn = new Button();
        PlayBtn.Font = new Font("Century Gothic", 9.75F, 
        System.Drawing.FontStyle.Regular, 
        System.Drawing.GraphicsUnit.Point, ((byte)(0)));
        PlayBtn.ForeColor = Color.Black;
        PlayBtn.Location = new Point(10, 467);
        PlayBtn.Name = "playBtn" + Convert.ToString(1 + i);
        PlayBtn.Size = new Size(100, 30);
        PlayBtn.TabIndex = 6;
        PlayBtn.Text = "Play";
        PlayBtn.UseVisualStyleBackColor = true;
        PlayBtn.Click += new EventHandler(playBtn1_Click);
        return PlayBtn;
        }

  public BMS_main()
        {
        int startPos = 5;
        int endPos = 5;

        for (int i = 1; i <= playlistCountInc; i++)
        {
            playListGrp = addplayListGrp(i, startPos, endPos);
            playListLbl = addLabel(i);
            Label playListLblTime = addLabelTime(i);
            Button PlayBtn = addPlayBtn(i);
        }
        playListGrp.Controls.Add(playListLbl);
        playListGrp.Controls.Add(playListLblTime);
        playListGrp.Controls.Add(playlistView);
        playListGrp.Controls.Add(PlayBtn);
        }
 private void playBtn1_Click(object sender, EventArgs e)
       {
           if (ScreenStatus)
        {
            Playing = true;
            DisplayTimer.Stop();
            DisplayTimer.Enabled = false;
            InitialScreenTimer.Stop();
            InitialScreenTimer.Enabled = false;
            PlayListTimer.Enabled = true;
            PlayListTimer.Start();
        }
        else
        {
            message = "Veuillez alimenter les panneaux";
            result = MessageBox.Show(message, caption, buttons);
        }
  public void PlayListTimer_Tick(object sender, EventArgs e)
        {
            Label lblAcessorio4 = 
            (Label)playListLbl.Controls.Find("playLbl4", 
            true).FirstOrDefault();
        if (lblAcessorio4 != null)
        {
            lblAcessorio4.Text = "Test lblAcessorio4";
        }
        else
        {
            message = "Label is null";
            result = MessageBox.Show(message, caption, buttons);
        }

1 个答案:

答案 0 :(得分:0)

设置按钮的Tag属性,以便稍后决定播放哪首歌曲:

playListGrp = addplayListGrp(i, startPos, endPos);
playListLbl = addLabel(i);
Label playListLblTime = addLabelTime(i);
Button PlayBtn = addPlayBtn(i);

// You can do this
PlayBtn.Tag = playListGrp; // or anything else

然后在按钮单击处理程序中,获取Tag的值并根据该值做出决定。请记住,无论您将Tag设置为什么,都需要将其强制转换为该类型。例如,在上面我设置了它GroupBox,所以我将它转换为GroupBox

private void playBtn1_Click(object sender, EventArgs e)
{
    GroupBox gb = ((Button)(sender)).Tag as GroupBox;

    // Now make the decision
    if(gb.Name == "whatever you need to put here"){ // do whatever }
}

我会把lisbox放到selected item然后播放。