Winforms 如何调用在c中动态创建的控件#
首先,非常感谢那些提问/回答问题的人。你能让我走这么远。 我想帮助一位年轻的比利时企业家接受挑战,开发一款媒体管理软件,在巨大的LED屏幕上显示各种媒体类型(图像、视频、链接、文本)。 我在EDI工作时,编码经验有限。 我的问题是,我根据数据库中播放列表的数量动态创建播放列表(请参见屏幕截图),但按下播放按钮时无法触发播放正确的播放列表。 警告,我的代码是noob代码。Winforms 如何调用在c中动态创建的控件#,winforms,Winforms,首先,非常感谢那些提问/回答问题的人。你能让我走这么远。 我想帮助一位年轻的比利时企业家接受挑战,开发一款媒体管理软件,在巨大的LED屏幕上显示各种媒体类型(图像、视频、链接、文本)。 我在EDI工作时,编码经验有限。 我的问题是,我根据数据库中播放列表的数量动态创建播放列表(请参见屏幕截图),但按下播放按钮时无法触发播放正确的播放列表。 警告,我的代码是noob代码。 Label playlbl=新标签(); GroupBox playlgrp=新的GroupBox(); 公共分组框addp
Label playlbl=新标签();
GroupBox playlgrp=新的GroupBox();
公共分组框addplayligrp(int i、int start、int end)
{
GroupBox playlgrp=新的GroupBox();
playlgrp.Name=“playlgrp”+转换为字符串(1+i);
playligrp.Text=“播放列表”+转换为字符串(1+i);
playligrp.Font=新字体(“世纪哥特式”,12F,
FontStyle.Regular,GraphicsUnit.Point,((字节)(0));
宽度=425;
高度=525;
页边距=新填充(1);
playligrp.Location=新点(起点、终点);
返回播放列表;
}
按钮addPlayBtn(int i)
{
按钮PlayBtn=新按钮();
PlayBtn.Font=新字体(“世纪哥特式”,9.75F,
System.Drawing.FontStyle.Regular,
System.Drawing.GraphicsUnit.Point,((字节)(0));
PlayBtn.ForeColor=颜色.黑色;
PlayBtn.Location=新点(10467);
PlayBtn.Name=“PlayBtn”+转换为字符串(1+i);
PlayBtn.Size=新尺寸(100,30);
PlayBtn.TabIndex=6;
PlayBtn.Text=“播放”;
PlayBtn.UseVisualStyleBackColor=true;
PlayBtn.Click+=新事件处理程序(playBtn1\u Click);
返回PlayBtn;
}
公共BMS_main()
{
int startPos=5;
int-endPos=5;
对于(int i=1;i设置按钮的标记
属性,该属性将帮助您稍后决定播放哪首歌曲:
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
然后在按钮单击处理程序中,获取标记的值
,并根据该值做出决定。请记住,无论将标记
设置为什么,都需要将其转换回该类型。例如,在上面的示例中,我将其设置为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,然后获取并播放它。如果愿意提供帮助,请先给我一个问题?即,在枚举.controls集合方面,您需要帮助的部分是什么?使用标记
属性存储标识符,然后在playBtn1\u单击事件中选中它(sender
是引发事件的按钮,将其强制转换为按钮
)。也许您应该将playgrd.Add放入创建控件的循环中。否则,您只添加最后一组控件“如何调用在c#中动态创建的控件?”这是windows窗体,与调用设计器创建的控件的方式相同。设计器真正做的是处理类的一个单独部分。它编写的所有代码都是在您调用构造函数中的“InitializeComponents()”时执行的。它不能做任何您不能做的事情。@Trey,很好,如果我点击按钮[I]自动生成,我如何更改相应标签的文本。例如:我动态生成按钮并按下按钮2;我如何更改标签2的文本
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 }
}