
C#中如何单击按钮变换背景图片?
C#中如何单击按钮变换背景图片?我写的是这样的,单击按钮然后我有一个下拉列表,里面有12个数,然后选择做了个12个panel,全部叠在一起放在其他空间的下面,,这12个p...
C#中如何单击按钮变换背景图片?
我写的是这样的,单击按钮然后我有一个下拉列表,里面有12个数,然后选择做了个12个panel,全部叠在一起放在其他空间的下面,,这12个panel控件的backcolor设为透明,上面每一个放置了不同的背景图片,Visible全部设为false,全部为隐藏,全部是然后选择列表框中的值时,比如选择是1,代码总panel1的Visible为真显示出来,应为设置为最底层所以panel在所有其他除panel控件外的控件下面,所以看上去就好像从什么都没有变出来了背景颜色一样,选择2,也会变背景颜色.
现在是实现了,但是只能换两张,比如选择1,panel1出现,选择2,panel出现,但是选择其他的都不出现,也就是说只有两张可以用,其他的设置和代码没错,只有两个panel可以显示!
我写的代码:
if (comboBox1.Text == "1")
{
panel001.Visible = true; panel002.Visible = false; panel003.Visible = false; panel004.Visible = false;
panel005.Visible = false; panel006.Visible = false; panel007.Visible = false; panel008.Visible = false;
panel009.Visible = false; panel010.Visible = false; panel111.Visible = false; panel112.Visible = false;
}
else if (comboBox1.Text == "2")
{
panel001.Visible = false; panel002.Visible = true; panel003.Visible = false; panel004.Visible = false;
panel005.Visible = false; panel006.Visible = false; panel007.Visible = false; panel008.Visible = false;
panel009.Visible = false; panel010.Visible = false; panel111.Visible = false; panel112.Visible = false;
}
else if (comboBox1.Text == "3")
{
panel001.Visible = false; panel002.Visible = false; panel003.Visible = true; panel004.Visible = false;
panel005.Visible = false; panel006.Visible = false; panel007.Visible = false; panel008.Visible = false;
panel009.Visible = false; panel010.Visible = false; panel111.Visible = false; panel112.Visible = false;
}
else if (comboBox1.Text == "4")
{
panel001.Visible = false; panel002.Visible = false; panel003.Visible = false; panel004.Visible = true;
panel005.Visible = false; panel006.Visible = false; panel007.Visible = false; panel008.Visible = false;
panel009.Visible = false; panel010.Visible = false; panel111.Visible = false; panel112.Visible = false;
}
else if (comboBox1.Text == "5")
{
panel001.Visible = false; panel002.Visible = false; panel003.Visible = false; panel004.Visible = false;
panel005.Visible = true; panel006.Visible = false; panel007.Visible = false; panel008.Visible = false;
panel009.Visible = false; panel010.Visible = false; panel111.Visible = false; panel112.Visible = false;
}
因为百度知道有字数限制所以我只贴出来几个,下面的其实代码都一样!懂的人帮忙看下,看能否帮我实现!谢谢! 展开
我写的是这样的,单击按钮然后我有一个下拉列表,里面有12个数,然后选择做了个12个panel,全部叠在一起放在其他空间的下面,,这12个panel控件的backcolor设为透明,上面每一个放置了不同的背景图片,Visible全部设为false,全部为隐藏,全部是然后选择列表框中的值时,比如选择是1,代码总panel1的Visible为真显示出来,应为设置为最底层所以panel在所有其他除panel控件外的控件下面,所以看上去就好像从什么都没有变出来了背景颜色一样,选择2,也会变背景颜色.
现在是实现了,但是只能换两张,比如选择1,panel1出现,选择2,panel出现,但是选择其他的都不出现,也就是说只有两张可以用,其他的设置和代码没错,只有两个panel可以显示!
我写的代码:
if (comboBox1.Text == "1")
{
panel001.Visible = true; panel002.Visible = false; panel003.Visible = false; panel004.Visible = false;
panel005.Visible = false; panel006.Visible = false; panel007.Visible = false; panel008.Visible = false;
panel009.Visible = false; panel010.Visible = false; panel111.Visible = false; panel112.Visible = false;
}
else if (comboBox1.Text == "2")
{
panel001.Visible = false; panel002.Visible = true; panel003.Visible = false; panel004.Visible = false;
panel005.Visible = false; panel006.Visible = false; panel007.Visible = false; panel008.Visible = false;
panel009.Visible = false; panel010.Visible = false; panel111.Visible = false; panel112.Visible = false;
}
else if (comboBox1.Text == "3")
{
panel001.Visible = false; panel002.Visible = false; panel003.Visible = true; panel004.Visible = false;
panel005.Visible = false; panel006.Visible = false; panel007.Visible = false; panel008.Visible = false;
panel009.Visible = false; panel010.Visible = false; panel111.Visible = false; panel112.Visible = false;
}
else if (comboBox1.Text == "4")
{
panel001.Visible = false; panel002.Visible = false; panel003.Visible = false; panel004.Visible = true;
panel005.Visible = false; panel006.Visible = false; panel007.Visible = false; panel008.Visible = false;
panel009.Visible = false; panel010.Visible = false; panel111.Visible = false; panel112.Visible = false;
}
else if (comboBox1.Text == "5")
{
panel001.Visible = false; panel002.Visible = false; panel003.Visible = false; panel004.Visible = false;
panel005.Visible = true; panel006.Visible = false; panel007.Visible = false; panel008.Visible = false;
panel009.Visible = false; panel010.Visible = false; panel111.Visible = false; panel112.Visible = false;
}
因为百度知道有字数限制所以我只贴出来几个,下面的其实代码都一样!懂的人帮忙看下,看能否帮我实现!谢谢! 展开
4个回答
展开全部
这么多个重复的代码。。
个人建议
1、做个函数,里面禁掉所有panel的visible.
再判断if (comboBox1.Text == "1")就显示panel1
或者换为switch case语句更清楚。
2、更简洁的方式。一个string数组,存好12张图的路径
就用一个panel
再判断if (comboBox1.Text == "1")就显示panel1
或者换为switch case语句更清楚。
就设置panel1.BackgroundImage = Image.FromFile(数组元素)就一切搞掂。
有问题直接找我。
个人建议
1、做个函数,里面禁掉所有panel的visible.
再判断if (comboBox1.Text == "1")就显示panel1
或者换为switch case语句更清楚。
2、更简洁的方式。一个string数组,存好12张图的路径
就用一个panel
再判断if (comboBox1.Text == "1")就显示panel1
或者换为switch case语句更清楚。
就设置panel1.BackgroundImage = Image.FromFile(数组元素)就一切搞掂。
有问题直接找我。
展开全部
唉,你那样写代码是不行滴
首先把你那些Panel的名称前面的0全删了,假如那些Panel全部都放在panBackground(Panel)里面且panBackground里面没有其他控件了
把代码改成:
try
{
foreach(Control item in panBackground.Controls) item.Visible = false;
panBackground.Controls["panel" + comboBox1.Text].Visible = true;
}
catch {}
首先把你那些Panel的名称前面的0全删了,假如那些Panel全部都放在panBackground(Panel)里面且panBackground里面没有其他控件了
把代码改成:
try
{
foreach(Control item in panBackground.Controls) item.Visible = false;
panBackground.Controls["panel" + comboBox1.Text].Visible = true;
}
catch {}
更多追问追答
追问
有点看不懂啊!Panel后面的001 ...... 这些是每一个Panel的name,我的意思就是当comboBox1为1时那Panel001visible为真显示,,其他的为假隐藏,其他的都是这样,002为真其他为假,
你是说那12个panel全放在一个panel中,你那个代码什么意思呢?要写在按钮事件里面吗?我的是选择后单击按钮然后背景图片变换!
追答
我知道是Panel的Name,去掉0的话代码执行起来更方便,而且加0本来也就是不大好的习惯
把12个Panel全部放到一个单独的Panel里面,这样就可以不用在代码里面再判断是不是要隐藏的控件,下面给你解释一下这两句代码:
foreach(Control item in panBackground.Controls) item.Visible = false;
遍历那个单独的Panel(此时这个Panel里面只有那12个控件),将所有控件隐藏
panBackground.Controls["panel" + comboBox1.Text].Visible = true;
通过Name查找ComboBox中指定要显示的Panel,并将其显示出来
加try的原因就是如果在ComboBox中输入13,这样就会找不到控件,从而引发“未将对象设置引用到对象的实例”的异常
如果还是不懂加QQ 626808803
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
建议将原 来的panel改为新添加窗体form,变成12个form。然后在一个父窗体里面定义一个公共窗体f,再添加一个splitContainer1,把窗体form的FormBorderStyle属性改为None.下面的代码应该看得懂吧??
if (comboBox1.Text == "1")
{
f.Dispose();
f = new form1();
f.MdiParent = this;
f.Parent = this.splitContainer1.Panel2;
f.Show();
}
if (comboBox1.Text == "1")
{
f.Dispose();
f = new form1();
f.MdiParent = this;
f.Parent = this.splitContainer1.Panel2;
f.Show();
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2011-07-22
展开全部
hjkcai886 是正解。建议楼主先研究一下遍历控件是怎么回事吧。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |