winforms 单击带有图像的C#按钮时不会“推入”

xtfmy6hx  于 2022-11-16  发布在  C#
关注(0)|答案(2)|浏览(187)

我正在尝试使用C#,但我对它相当缺乏经验。我有一个按钮,上面有文本和图像。当我运行程序并按下按钮时,按钮和文本沿着被推入,但图像保持静态。
有人知道变通办法吗?

  • 编辑:
this.btnRename.AllowDrop = true;
    this.btnRename.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
                | System.Windows.Forms.AnchorStyles.Right)));
    this.btnRename.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None;
    this.btnRename.Image = ((System.Drawing.Image)(resources.GetObject("btnRename.Image")));
    this.btnRename.ImageAlign = System.Drawing.ContentAlignment.TopCenter;
    this.btnRename.Location = new System.Drawing.Point(675, 3);
    this.btnRename.Margin = new System.Windows.Forms.Padding(0);
    this.btnRename.Name = "btnRename";
    this.btnRename.Size = new System.Drawing.Size(55, 48);
    this.btnRename.TabIndex = 7;
    this.btnRename.Text = "&Rename";
    this.btnRename.TextAlign = System.Drawing.ContentAlignment.BottomCenter;
    this.btnRename.UseVisualStyleBackColor = false;
    this.btnRename.Click += new System.EventHandler(this.btnRename_Click);
brtdzjyr

brtdzjyr1#

.NET不会自动为您执行此操作,因为它不知道您希望单击按钮时图像会发生什么变化。向左移动...等等。也许您可以实现MouseDown和MouseUp事件?在MouseDown上,您可以让它将图像更改为您希望看到的“推入”图像,然后在MouseUp上将其更改回来。当然,这涉及到你基本上有2个图像,一个“点击”和一个“正常”版本。

ax6ht2ek

ax6ht2ek2#

我在使用自定义图像按钮时遇到了同样的问题。我所做的是通过覆盖OnMouseDown事件处理程序来模拟“按钮闪烁”。

protected override void OnMouseDown(EventArgs e) {
  base.OnMouseDown(e);

  var g = this.CreateGraphics();
  var brush = new SolidBrush(Color.FromArgb(128, 128, 128, 128));
  g.FillRectangle(brush, this.ClientRectangle);
  System.Threading.Thread.Sleep(50);
}

闪烁是通过在按钮上画一个半透明的矩形来模拟的。需要Thread.Sleep(),否则我看不到效果。

相关问题