在c#中禁用并更改按钮图像
本文关键字:按钮 图像 | 更新日期: 2023-09-27 18:10:57
我想在点击按钮时禁用它并将其背景图像更改为null这是我在点击按钮
时设置的代码 private void levelOne1001_Click(object sender, EventArgs e)
{
levelOne1001.Enabled = false;
levelOne1001.BackgroundImage = null;
scoreClass.genRandomNumber(100);
scoreClass.valOfQuestion = 100;
q1001 = true;
openQuestionForm();
}
这是openQuestionForm();
private void openQuestionForm()
{
QuestionForm qForm = new QuestionForm();
scoreClass.iCount++;
qForm.Show();
this.Hide();
}
我在这里调用这个表单
Level1Form l1Form = new Level1Form();
l1Form.Show();
这个过程是如何工作的,点击原始表单上的按钮进入问题表单,点击问题表单上的按钮回到原始表单。但当我回到原始表单按钮仍然是启用的,图像仍然在那里。有办法解决这个问题吗?
编辑:忘了说这是在WinForms你正在实例化一个新的Level1Form,所以它返回到它的默认状态,导致按钮返回到它的默认状态。有几种可能的方法:
在Level1Form的构造函数中添加一个参数,指示按钮应该处于什么状态,例如
Level1Form(bool enableButton) {
initComponent();
if(!enableButton) {
levelOne1001.Enabled = false;
levelOne1001.BackgroundImage = null;
}
}
或者,再次抓取相同的表单并重用它。你需要在某个地方保存对它的引用,并告诉它再次显示自己。或者,您可以从Application.OpenForms
您正在创建一个新的Level1Form
实例,它与您修改的现有实例无关。
您需要重新显示原始实例
您需要在方法外部的成员中记住您的初始表单实例,并在其上调用show。
Level1Form l1Form;
private void FirstTimeCreate()
{
l1Form = new Level1Form();
}
private void Reshow()
{
l1Form.Show();
}
首先将ImageList1添加到您的设计页面。然后点击图片列表上方的箭头,点击"选择图片"并添加所有不同类型的图像,您希望您的按钮在点击它时发生变化。然后编写下面的代码:
int im = 3;
private void levelOne1001_Click(object sender, EventArgs e)
{
levelOne1001.BackgroundImage = imageList1.Images[im];
switch (im)
{
case 0:
case 1:
case 2:
im++;
break;
default:
im =0; // assuming you have 3 images; if you are at image 3 and click then let it go to image with index 0 (which is the beginning).
break;
}
// levelOne1001.Enabled = false; // you can add this code above as you see fit
}