如何在WinForms中使用C#创建一个不可见的可单击按钮?

myzjeezk  于 2023-06-06  发布在  C#
关注(0)|答案(2)|浏览(293)

我试图在WinForms中创建一个不可见的可单击按钮,但我不知道如何做到这一点。我看了this的帖子,但没有多大帮助,因为Color.Transparent不支持按钮的边框颜色。现在我有以下代码:

StartGameButton.FlatAppearance.MouseDownBackColor = Color.Transparent;
StartGameButton.FlatAppearance.MouseOverBackColor = Color.Transparent;

按钮FlatStyle通过设计器中的属性选项卡设置为Flat,而BackColor设置为Color.Transparent-现在我唯一能看到的是按钮的边框,它是黑色的。
我尝试了我链接的StackOverflow帖子的所有答案,但没有一个有帮助。他们都编译了,但没有隐藏边框,因为他们要么忘记添加任何东西来隐藏边框,要么它没有编译,说Color.Transparent不支持边框颜色,或者他们会尝试使用BackColor,出于某种原因编译,但仍然没有隐藏边框。我也试过StartGameButton.Visible = false;,但后来由于某种原因它使按钮无法点击。

flseospp

flseospp1#

Button invisibleButton = new Button();
    invisibleButton.Size = new Size(100, 50); // Set the size of the button
    invisibleButton.Location = new Point(50, 50); // Set the location of the button
    invisibleButton.BackColor = Color.Transparent; // Make the button invisible
    invisibleButton.FlatAppearance.MouseOverBackColor = Color.Transparent; // Make the button invisible when the mouse is over it
    invisibleButton.FlatAppearance.MouseDownBackColor = Color.Transparent; // Make the button invisible when it's clicked
    invisibleButton.FlatStyle = FlatStyle.Flat; // Required to make the button invisible
    invisibleButton.FlatAppearance.BorderSize = 0; // Required to make the button invisible
    
    // Add a click event handler
    invisibleButton.Click += new EventHandler(InvisibleButton_Click);
    
    // Add the button to the form
    this.Controls.Add(invisibleButton);
    
    // The click event handler
    void InvisibleButton_Click(object sender, EventArgs e)
    {
        MessageBox.Show("Invisible button clicked!");
    }

这段代码创建了一个不可见但仍然可以点击的按钮。按钮的BackColor设置为Color.Transparent以使其不可见,FlatStyle属性设置为FlatStyle.Flat以移除3D边框效果。将FlatAppearance.BorderSize设置为0以移除边框。FlatAppearance.MouseOverBackColor和FlatAppearance.MouseDownBackColor属性也设置为Color.Transparent,以使按钮在鼠标悬停和单击时保持不可见。
Click事件由InvisibleButton_Click方法处理,该方法在单击按钮时显示一个消息框。然后将该按钮添加到窗体的控件中。

ar5n3qh5

ar5n3qh52#

您需要使按钮的背景颜色与当前面板或窗体的背景颜色相同,并且可以使用下面的代码防止按钮被注意到。

private void button1_Click(object sender, EventArgs e)
    {
        MessageBox.Show("...");
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        button1.FlatAppearance.MouseOverBackColor = button1.BackColor;
        button1.FlatStyle = FlatStyle.Flat;
        button1.FlatAppearance.BorderSize = 0;
    }

example

相关问题