none
¿Puedo ver un Video en una celda de un TABLELAYOUTPANEL? RRS feed

  • Pregunta

  • Hola, no consigo mostrar videos en las celdas del tablelayoutpanel. Utilizo el control AXWindowsMediaPlayer, pero no se qué indicarle ya para que me muestre los videos, no saca nada, saca la celda vacía sin mas. Esto es lo que le indico ahora, le incluí el ctr.CreateControl, porque si no, me daba error.

    ctr = new AxWindowsMediaPlayer(); ctr.CreateControl(); ctr.URL="NombreVideo.mp4"

    tablelayoutpanel1.Controls.Add(ctr)

    Si alguien tuviera alguna solución para mostrar un video en una celda del tablelayoutpanel, se lo agradecería mucho, me es necesario, y ya llevo muchos días con esto. Saludos y muchas gracias!.
    lunes, 26 de octubre de 2015 10:35

Respuestas

  • Espiando la manera en que lo hace el editor, este ejemplo sí muestra cada control...

    // un formulario conteniendo
    // un botón, un label, un tablelayoutpanel y un folderbrowserdialog
    using System;
    using System.Windows.Forms;
    using System.IO;
    using AxWMPLib;
    
    namespace WindowsFormsApplication1
    {
        public partial class Form1 : Form
        {
            const int anchoColumna = 200;
            const int altoFila = 200;
            const int columnas = 2;
    
            public Form1()
            {
                InitializeComponent();
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
                tableLayoutPanel1.AutoScroll = true;
                tableLayoutPanel1.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left;
                tableLayoutPanel1.ColumnCount = columnas;
    
                // tamaño en pixeles de cada columna
                foreach (ColumnStyle item in tableLayoutPanel1.ColumnStyles)
                {
                    item.Width = anchoColumna;
                    item.SizeType = SizeType.Absolute;
                }
    
                // ancho del tablelayoutpanel
                tableLayoutPanel1.Width = tableLayoutPanel1.ColumnCount * anchoColumna + SystemInformation.VerticalScrollBarWidth + 1;
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                if (folderBrowserDialog1.ShowDialog(this) == System.Windows.Forms.DialogResult.OK)
                {
                    lblCarpeta.Text = folderBrowserDialog1.SelectedPath;
    
                    // limpiamos la tabla y liberamos los controles
                    tableLayoutPanel1.RowStyles.Clear();
                    tableLayoutPanel1.RowCount = 0;
                    tableLayoutPanel1.Controls.Clear();
                    System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1));
    
                    foreach (string item in Directory.EnumerateFiles(folderBrowserDialog1.SelectedPath, "*.mp3"))
                    {
                        AxWindowsMediaPlayer mp = new AxWindowsMediaPlayer();
                        ((System.ComponentModel.ISupportInitialize)(mp)).BeginInit();
                        mp.Name = "mp";
                        mp.OcxState = ((System.Windows.Forms.AxHost.State)(resources.GetObject("mp.OcxState")));
                        ((System.ComponentModel.ISupportInitialize)(mp)).EndInit();
    
                        tableLayoutPanel1.Controls.Add(mp);
    
                        mp.Width = anchoColumna;
                        mp.Height = altoFila;
                        mp.settings.autoStart = false;
                        mp.URL = item;
    
                        if (tableLayoutPanel1.Controls.Count > 3) break;
                    }
    
                    // altura en pixeles de cada fila
                    foreach (RowStyle item in tableLayoutPanel1.RowStyles)
                    {
                        item.Height = altoFila;
                        item.SizeType = SizeType.Absolute;
                    }
                }
            }
    
    
        }
    }

    Fijate la forma en que recupera el ocxState.

    lunes, 26 de octubre de 2015 12:59

Todas las respuestas

  • Hola de nuevo, olvidé decir que se trata de un tablelayoutpanel dinámico, lo voy rellenado según haga falta. Sigo sin encontrar la manera de que se muestren los videos, no se que puedo hacer. He probado ya todo lo que he podido.

    Por favor, agradecería me echaran una mano.

    lunes, 26 de octubre de 2015 11:39
  • Espiando la manera en que lo hace el editor, este ejemplo sí muestra cada control...

    // un formulario conteniendo
    // un botón, un label, un tablelayoutpanel y un folderbrowserdialog
    using System;
    using System.Windows.Forms;
    using System.IO;
    using AxWMPLib;
    
    namespace WindowsFormsApplication1
    {
        public partial class Form1 : Form
        {
            const int anchoColumna = 200;
            const int altoFila = 200;
            const int columnas = 2;
    
            public Form1()
            {
                InitializeComponent();
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
                tableLayoutPanel1.AutoScroll = true;
                tableLayoutPanel1.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left;
                tableLayoutPanel1.ColumnCount = columnas;
    
                // tamaño en pixeles de cada columna
                foreach (ColumnStyle item in tableLayoutPanel1.ColumnStyles)
                {
                    item.Width = anchoColumna;
                    item.SizeType = SizeType.Absolute;
                }
    
                // ancho del tablelayoutpanel
                tableLayoutPanel1.Width = tableLayoutPanel1.ColumnCount * anchoColumna + SystemInformation.VerticalScrollBarWidth + 1;
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                if (folderBrowserDialog1.ShowDialog(this) == System.Windows.Forms.DialogResult.OK)
                {
                    lblCarpeta.Text = folderBrowserDialog1.SelectedPath;
    
                    // limpiamos la tabla y liberamos los controles
                    tableLayoutPanel1.RowStyles.Clear();
                    tableLayoutPanel1.RowCount = 0;
                    tableLayoutPanel1.Controls.Clear();
                    System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1));
    
                    foreach (string item in Directory.EnumerateFiles(folderBrowserDialog1.SelectedPath, "*.mp3"))
                    {
                        AxWindowsMediaPlayer mp = new AxWindowsMediaPlayer();
                        ((System.ComponentModel.ISupportInitialize)(mp)).BeginInit();
                        mp.Name = "mp";
                        mp.OcxState = ((System.Windows.Forms.AxHost.State)(resources.GetObject("mp.OcxState")));
                        ((System.ComponentModel.ISupportInitialize)(mp)).EndInit();
    
                        tableLayoutPanel1.Controls.Add(mp);
    
                        mp.Width = anchoColumna;
                        mp.Height = altoFila;
                        mp.settings.autoStart = false;
                        mp.URL = item;
    
                        if (tableLayoutPanel1.Controls.Count > 3) break;
                    }
    
                    // altura en pixeles de cada fila
                    foreach (RowStyle item in tableLayoutPanel1.RowStyles)
                    {
                        item.Height = altoFila;
                        item.SizeType = SizeType.Absolute;
                    }
                }
            }
    
    
        }
    }

    Fijate la forma en que recupera el ocxState.

    lunes, 26 de octubre de 2015 12:59
  • Hola, ha funcionado como me ha indicado, se lo agradezco mucho!

    Pero me he dado cuenta de que hay un problema y no se como solucionarlo, he conseguido mostrar los videos con el control AxWindowsMediaPlayer, pero, en el caso de tener que mostrar el autoscroll, la barra de desplazamiento del tablelayoutpanel, porque las filas no quepan en el formulario, los videos siguen viéndose, pero al mover la barra de desplazamiento, se mueven de forma extraña y se ven fuera de su celda correspondiente del tablelayoutpanel.

    ¿Puedo fijarlos de algún modo o hacer algo para solucionar este fallo? Gracias de nuevo!

    Que Dios se lo pague, muchas MUCHÍSIMAS GRACIAS!!


    • Editado Elena_Nueva martes, 27 de octubre de 2015 0:07 Ha aparecido un error
    lunes, 26 de octubre de 2015 23:41