Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 更改按钮图像_C#_.net_Winforms_.net 2.0 - Fatal编程技术网

C# 更改按钮图像

C# 更改按钮图像,c#,.net,winforms,.net-2.0,C#,.net,Winforms,.net 2.0,在表格1中,我有几个按钮,上面有一个类似的图像,表示一个特定的设施,比如说一个网球场。但是,假设现在我单击另一个表单中的另一个按钮预订该特定球场,如何将表单1上的按钮图像更改为另一个图像,以显示该球场已预订?您可以使用事件进行预订 预订操作将触发一个事件,表明设施已预订。 Form1将注册一个事件处理程序,并更改按钮的图像以反映设施的状态 编辑(如何处理事件): 公共类FacilityStateChangeEventArgs:EventArgs { 公共设施StateChangeEventArg

在表格1中,我有几个按钮,上面有一个类似的图像,表示一个特定的设施,比如说一个网球场。但是,假设现在我单击另一个表单中的另一个按钮预订该特定球场,如何将表单1上的按钮图像更改为另一个图像,以显示该球场已预订?

您可以使用事件进行预订

预订操作将触发一个事件,表明设施已预订。
Form1将注册一个事件处理程序,并更改按钮的图像以反映设施的状态

编辑(如何处理事件):

公共类FacilityStateChangeEventArgs:EventArgs
{
公共设施StateChangeEventArgs(bool已预订)
{
这个.预订的=预订的;
}
公共bool{get;protected set;}
//…如果您需要其他属性
}
公共类设施
{
私有bool=false;
公共图书馆预订
{
得到
{
把这本书退回来;
}
保护集
{
如果(this.booked==value)返回;
//更改状态并激发事件。
这等于价值;
火变();
}
}
公共事件事件处理程序状态更改;
//当预订发生更改时,您将使用此方法
公众假期
{
如果(this.StateChange!=null)this.StateChange(this,new FacilityStateChangeEventArgs(this.Booked));
}
}
//使用“图像”按钮创建窗体。
公共类FormWithButton
{
Button button1=新按钮();
公共空间
{
//您将从您的业务实例中获得该设施。
设施=新设施();
facility.StateChange+=新事件处理程序(facility\u StateChange);
}
无效设施状态更改(对象发送方、设施状态更改事件参数e)
{
如果(e.Booked)按钮1.Image=null;//Booked Image
else按钮1.Image=null;//自由映像
}
}

更改按钮的图像属性以显示其他资源。乙二醇/

   using namespace.Properties;

   namespace namespace
   {

         private void button1_Click(object sender, EventArgs e)
         {
            button1.Image = Resources.pictureName;

         }
    } 
您可以将该球场是否已预订的信息保存在数据库中,然后根据数据库中的bool字段返回图片

乙二醇 您有一个数据库,其中有一个名为court的表,因此字段是id(pk)、name和isBooked(bool)

在页面加载时,您可以

      sqlconnection con = new sqlconnection("insert connstring here");
      sqlcommand com = new sqlcommand("select isBooked from court where id = @id", con);
      con.open();
      sqldatareader reader = com.executereader();
      while(reader.read())
      { 
          bool booked = (bool)reader["isBooked"];
      }


      if(booked = true)
          //one picture as above
      else
          //another picture 

请原谅我的代码太草率了,这只是一个例子,好吧,我假设您是从Form1启动预订表单的,您在Form1中显示了Court的按钮。因此,代码在Form1中看起来会像这样(在这里您有一个court image按钮):

现在,当在预订表单上单击该按钮时,您的球场图像按钮将更改其图像

如果是2005年,即.Net 2.0,那么我们没有lambda,代码如下:

FormBooking frm = new FormBooking();
frm.Controls["nameofbooking_button"].Click += new EventHandler(ChangeImage);
frm.Show();   
然后在你的Form1课程中:

private void ChangeImage(object sender, EventArgs e)
{
            //The button with the court image
            this.CourtImageButton.Image = Image.FromFile(@"C:\courtbooked.png");
}

如果不与数据库通信,只需使用此选项

表单一个按钮单击此处显示其他表单表单2

 Form2 frmtwo = new Form2(this);
  frmtwo.ShowDialog();
然后在第二个表单构造函数中添加

 Form Frmtwo;
        public Form2(Form frm)
        {
            InitializeComponent();
            Frmtwo = frm;
        }
然后将此代码添加到按钮中,单击要以第一种形式显示图像的位置

PictureBox pc = (PictureBox)Frmtwo.Controls["pictureBox1"];
pc.ImageLocation  = @"C:\Documents and Settings\All Users\Documents\My Pictures\Sample Pictures\1.jpg";

谢谢你的回复,我该如何使用这个事件和事件处理程序?@pacheco:我在三周前为我的答案添加了代码,你可能错过了。嗨,谢谢你的回复。如果我想更改的按钮是另一种形式,该怎么办?数据库选项是最好的,因为信息将取自数据库。查看我将在原始postHi上进行的编辑,我正在考虑通过db进行编辑,在你建议之后,但我使用OleDb,代码会有什么不同?不确定没有使用OleDb,我相信这只是对oledbsqlconnection的sqlconnection/命令和datareader等更改,但我从未使用过OleDb,因此我无法真正帮助sorryHi,谢谢你的回复。如果在this.CourtImageButton.image=的参考资料中称为courtbooked.png,如何插入图像?语句?我得到以下错误:对象引用未设置为对象的实例。此行:frm.Controls[“Court1Button”]。单击+=new EventHandler(ChangeImage);确保Court1Button是按钮的名称,而不是设计器上的实例名称右键单击按钮(如上所述Court1Button)并选择Properties。然后查找名称,它是您应该在指定答案中使用的名称。(请注意,名称应完全相同(区分大小写)
 Form Frmtwo;
        public Form2(Form frm)
        {
            InitializeComponent();
            Frmtwo = frm;
        }
PictureBox pc = (PictureBox)Frmtwo.Controls["pictureBox1"];
pc.ImageLocation  = @"C:\Documents and Settings\All Users\Documents\My Pictures\Sample Pictures\1.jpg";