winform怎么实现凹凸按键 点击后处于凹陷状态 再次点击弹起

q514849152 2015-02-06 04:01:04
效果图 ,不好意思哈 没有多少分。
...全文
1250 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
微wx笑 2015-03-12
  • 打赏
  • 举报
回复
维护一个变量记录状态,点击时根据状态更换图片。
  • 打赏
  • 举报
回复
楼主知道怎么做,就是不想自己动手而已
layershow 2015-02-09
  • 打赏
  • 举报
回复
RadioButton 和 CheckBox 他们都有一个属性 Appearance 设置为 Button 时 都是 Windows PushButton 用哪个取决于你的设计,是想一个按下另外一个弹起来还是怎样
黎大 2015-02-09
  • 打赏
  • 举报
回复
原声按钮,手动重绘,编辑onclick,设置奇偶计数变量,
zujinsheng 2015-02-08
  • 打赏
  • 举报
回复
或者选中的时候, 改变一下背景色喽.. 多简单明了
七步777 2015-02-08
  • 打赏
  • 举报
回复
引用 楼主 q514849152 的回复:
效果图 ,不好意思哈 没有多少分。
根据你的需求,建议采用自定义控件。 我这里有一个自定义的按钮控件,实现的功能是鼠标滑到按钮上的时候,显示一个提示信息。

//继承原Button
    public partial class ButtonTip : Button
    {
        private string tipText;
        private ToolTip tip;
        public ButtonTip()
        {
            InitializeComponent();
            this.MouseEnter += new EventHandler(ButtonTip_MouseEnter);
            this.MouseLeave += new EventHandler(ButtonTip_MouseLeave);
        }

        void ButtonTip_MouseLeave(object sender, EventArgs e)
        {
            tip.Dispose();
        }

        void ButtonTip_MouseEnter(object sender, EventArgs e)
        {

            tip = new ToolTip();
            tip.SetToolTip(this, tipText);
            tip.Show(tipText, this, this.Width / 2, -this.Height + 3);
        }

        [Browsable(true)]
        [Description("get or set text would be shown on the button when the point of your mouse is hovering on it!\n获取或设置鼠标指针悬停在按钮上时要显示的文本")]
        [Category("TipButton")]
        [RefreshProperties(RefreshProperties.All)]
        public String TipText
        {
            get
            {
                return tipText;
            }
            set
            {
                if (value != null)
                {
                    if (value.Length < 1)
                    {
                        tipText = Text;
                    }
                    else
                    {
                        tipText = value;
                    }
                }
                else
                {
                    tipText = Text;
                }
            }
        }
    }
你可以先定义个BOOL,点第下,换掉背景图片,改为true,在点一下,再把图片换回去,改为false。 做好了,剩下的就是拖控件了。
於黾 2015-02-07
  • 打赏
  • 举报
回复
最简单的办法,不用重绘 就是按下时变个深一点的颜色,就完了 再按一下,颜色变回来。 总之能把按下的那个和其他的区分开来就得了
於黾 2015-02-07
  • 打赏
  • 举报
回复
自己画不好,还不想找美工,还嫌系统控件丑 你是有多任性啊 就好像家里只有方便面,说不喜欢吃方便面,自己又不会做饭,又懒得下饭馆,又没钱请厨师 那就饿着吧
SmileSkyNet 2015-02-07
  • 打赏
  • 举报
回复
楼上的可以实现功能,但是效果不是很好,最好是自己写个控件继承picturebox 然后给按上面说的给两个状态图片,并加一个属性bool Selected,在控件Click事件中加入 if(Selected) { //显示按下图片  Selected=false; } else { //显示正常图片  Selected=true; }
EdsionWang 2015-02-07
  • 打赏
  • 举报
回复
设置button的FlatStyle属性(PopUp、Flat)
q514849152 2015-02-07
  • 打赏
  • 举报
回复
引用 9 楼 Forty2 的回复:
可以用RadioButton并把它的Appearance设置为Button,就是凹凸按键:
public Form1()
{
    InitializeComponent();
    for (int i = 0; i < 4; i++)
    {
        RadioButton rb = new RadioButton()
        {
            Appearance = Appearance.Button,
            Text = "Button " + i,
            Location = new Point(30, 30 * i),
        };
        this.Controls.Add(rb);
    }
}
这个达不到这种效果 点击的时候按钮没有凹陷下去
Forty2 2015-02-07
  • 打赏
  • 举报
回复
可以用RadioButton并把它的Appearance设置为Button,就是凹凸按键:
public Form1()
{
    InitializeComponent();
    for (int i = 0; i < 4; i++)
    {
        RadioButton rb = new RadioButton()
        {
            Appearance = Appearance.Button,
            Text = "Button " + i,
            Location = new Point(30, 30 * i),
        };
        this.Controls.Add(rb);
    }
}
本拉灯 2015-02-06
  • 打赏
  • 举报
回复
引用 6 楼 q514849152 的回复:
[quote=引用 2 楼 wyd1520 的回复:] 用两张图片+PictureBox就可以实现了呀汗。 按下时变成凹的图片同时记录一个属性 继承PictureBox类 重写Click方法 private bool Selected; protected override void OnClick(EventArgs e) { this.Selected=!this.Selected; this.Image=this.Selected? Image1:Image2; }
不想找美工啊 [/quote] ...你打开PS把上面的图切出来,现在都可以做完了。再说了你想用原生的地你要自己用GDI画,不累么,最终效果还是一样的。
q514849152 2015-02-06
  • 打赏
  • 举报
回复
引用 5 楼 Z65443344 的回复:
[quote=引用 3 楼 q514849152 的回复:] 不想这样子实现 想用原生的按钮 实现
原生按钮就是鼠标点下凹陷,鼠标放开抬起,没有这功能 而且也没有按钮上显示斜线的功能 反正你也是得重绘,直接重绘整个按钮不就得了[/quote] 知道重绘 绘的很不像 看看大家有没有现成的代码
q514849152 2015-02-06
  • 打赏
  • 举报
回复
引用 2 楼 wyd1520 的回复:
用两张图片+PictureBox就可以实现了呀汗。 按下时变成凹的图片同时记录一个属性 继承PictureBox类 重写Click方法 private bool Selected; protected override void OnClick(EventArgs e) { this.Selected=!this.Selected; this.Image=this.Selected? Image1:Image2; }
不想找美工啊
於黾 2015-02-06
  • 打赏
  • 举报
回复
引用 3 楼 q514849152 的回复:
不想这样子实现 想用原生的按钮 实现
原生按钮就是鼠标点下凹陷,鼠标放开抬起,没有这功能 而且也没有按钮上显示斜线的功能 反正你也是得重绘,直接重绘整个按钮不就得了
於黾 2015-02-06
  • 打赏
  • 举报
回复
或者重绘,其实不过是放的图片不是图片文件,而是自己GDI+画的,一回事 你也可以继承button之后再重绘,做成自定义控件,这样不用每个按钮都来一遍这个过程
q514849152 2015-02-06
  • 打赏
  • 举报
回复
不想这样子实现 想用原生的按钮 实现
本拉灯 2015-02-06
  • 打赏
  • 举报
回复
用两张图片+PictureBox就可以实现了呀汗。 按下时变成凹的图片同时记录一个属性 继承PictureBox类 重写Click方法 private bool Selected; protected override void OnClick(EventArgs e) { this.Selected=!this.Selected; this.Image=this.Selected? Image1:Image2; }
於黾 2015-02-06
  • 打赏
  • 举报
回复
放俩图片,一个是按下去的,一个是弹出来的,切换显示

110,542

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧