Как мне вызвать элемент управления, который был создан динамически в C # - PullRequest
0 голосов
/ 16 мая 2018

Во-первых, большое спасибо тем, кто задавал / отвечал на вопросы.Вы смогли получить меня так далеко.Я хотел помочь молодому бельгийскому предпринимателю, взяв на себя задачу, создать программное обеспечение для управления мультимедиа для отображения различных типов мультимедиа (изображений, видео, ссылок, текста) на огромных светодиодных экранах.У меня ограниченный опыт кодирования, так как я работаю в 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 голосов
/ 17 мая 2018

Установите свойство 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 }
}

Я бы положил список, а затем получил выбранный элемент и сыграл бы его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...