C#中怎样设置Button控件的按下和弹起事件

时间:2023-02-08 19:02:35
在C#的Windows编程中,我用了一个Button控件,现在我想实现以下功能,请问应该怎样写?
有一个Button控件btnSoundStatus,当单击一下鼠标左键按下这个Button时,释放鼠标它不会弹起,而是保持凹陷状态,开始给炉子加热,
当再次单击这个Button时它才弹起,停止给炉子加热。因此Button在这就相当于一个开关,第一次将其按下启动电源开始加热,
以后再按一下则弹起来,断开电源停止加热。
请问这个功能应该怎样实现,我看了Button只有一个Click事件,而且每次单击Button释放左键后Button也自动弹起了,要怎样才能不让它自动
弹起呢?还有我发现ToggleButton控件能够满足我的要求,但这个控件我不会用在MSDN上也查不到用法,不知是否有人知道怎么用?
请各位帮帮忙,谢谢!

17 个解决方案

#1


希望各位大虾写得尽量详细点,谢谢!

#2


现成的btn就能实现你的需求  自己动脑子想想吧  很简单的  如果非要找那样的控件  估计很难找到现成的  你自己绘制吧

#3



    //使用radiobutton替找可以达到同样的效果
    public partial class Form1 : Form
    {
        //按下状态标识
        private bool m_btnState;

        public Form1()
        {
            InitializeComponent();

            //将radiobutton设为按钮形式
            this.radioButton1.Appearance = System.Windows.Forms.Appearance.Button;
            this.radioButton1.Checked = false;
            this.m_btnState = this.radioButton1.Checked;
        }

        //点击时切换接下状态
        private void radioButton1_Click(object sender, EventArgs e)
        {
            if (m_btnState == false)
            {
                this.radioButton1.Checked = true;
                this.m_btnState = true;
            }
            else
            {
                this.radioButton1.Checked =false;
                this.m_btnState=false;
            }
        }
    }

#4


3楼方法正解。帮你顶一个

#5


其实给按钮加两张图片就行,两张图片轮换着用。。

#6


以前学VB时,遇到这种问题就是按5楼说的那样做的。

#7


引用 5 楼 min_jie 的回复:
其实给按钮加两张图片就行,两张图片轮换着用。。

。。。

#8


引用 3 楼 duping9626 的回复:
C# code
    //使用radiobutton替找可以达到同样的效果
    public partial class Form1 : Form
    {
        //按下状态标识
        private bool m_btnState;

        public Form1()
        {
            InitializeComponent();

            //将radiobutton设为按钮形式
            this.radioButton1.Appearance = System.Windows.Forms.Appearance.Button;
            this.radioButton1.Checked = …


这是设置不同的style ,根据你执行的事情不同; 另一种就是加载不同的图片!

#9


我同意3楼的做法,然后在判断中写要执行的操作。

#10


引用 5 楼 min_jie 的回复:
其实给按钮加两张图片就行,两张图片轮换着用。。

这个应该是最简单的办法。

#11


似乎自带的button没有弹起事件。
好像得自己添加控件

#12


up

#13


mark

#14


谢谢各位的解答,三楼的方法很好用。

#15


看看3楼的答案

#16


来看看三楼正解。。。

#17


     用checkBox,在属性中设置
      this.checkBox1.Appearance = System.Windows.Forms.Appearance.Button;

     private void checkBox1_CheckedChanged(object sender, EventArgs e)
        {
            if (checkBox1.Checked == true)
            {
                checkBox1.Text = "按下状态";
                ...
            }
            if (checkBox1.Checked == false)
            {
                checkBox1.Text = "弹起状态";
                .....
            }

        }

#1


希望各位大虾写得尽量详细点,谢谢!

#2


现成的btn就能实现你的需求  自己动脑子想想吧  很简单的  如果非要找那样的控件  估计很难找到现成的  你自己绘制吧

#3



    //使用radiobutton替找可以达到同样的效果
    public partial class Form1 : Form
    {
        //按下状态标识
        private bool m_btnState;

        public Form1()
        {
            InitializeComponent();

            //将radiobutton设为按钮形式
            this.radioButton1.Appearance = System.Windows.Forms.Appearance.Button;
            this.radioButton1.Checked = false;
            this.m_btnState = this.radioButton1.Checked;
        }

        //点击时切换接下状态
        private void radioButton1_Click(object sender, EventArgs e)
        {
            if (m_btnState == false)
            {
                this.radioButton1.Checked = true;
                this.m_btnState = true;
            }
            else
            {
                this.radioButton1.Checked =false;
                this.m_btnState=false;
            }
        }
    }

#4


3楼方法正解。帮你顶一个

#5


其实给按钮加两张图片就行,两张图片轮换着用。。

#6


以前学VB时,遇到这种问题就是按5楼说的那样做的。

#7


引用 5 楼 min_jie 的回复:
其实给按钮加两张图片就行,两张图片轮换着用。。

。。。

#8


引用 3 楼 duping9626 的回复:
C# code
    //使用radiobutton替找可以达到同样的效果
    public partial class Form1 : Form
    {
        //按下状态标识
        private bool m_btnState;

        public Form1()
        {
            InitializeComponent();

            //将radiobutton设为按钮形式
            this.radioButton1.Appearance = System.Windows.Forms.Appearance.Button;
            this.radioButton1.Checked = …


这是设置不同的style ,根据你执行的事情不同; 另一种就是加载不同的图片!

#9


我同意3楼的做法,然后在判断中写要执行的操作。

#10


引用 5 楼 min_jie 的回复:
其实给按钮加两张图片就行,两张图片轮换着用。。

这个应该是最简单的办法。

#11


似乎自带的button没有弹起事件。
好像得自己添加控件

#12


up

#13


mark

#14


谢谢各位的解答,三楼的方法很好用。

#15


看看3楼的答案

#16


来看看三楼正解。。。

#17


     用checkBox,在属性中设置
      this.checkBox1.Appearance = System.Windows.Forms.Appearance.Button;

     private void checkBox1_CheckedChanged(object sender, EventArgs e)
        {
            if (checkBox1.Checked == true)
            {
                checkBox1.Text = "按下状态";
                ...
            }
            if (checkBox1.Checked == false)
            {
                checkBox1.Text = "弹起状态";
                .....
            }

        }