12

私はC#を初めて使用します。非表示のボタンを作成したいのですが、C#ウィンドウフォームアプリケーションでクリック可能です。方法はありますか?BackColorをTransparentに試しましたが、それでも透明であるという事実は変わりません。

4

5 に答える 5

30

その簡単なこれを試してみてください。

透明にしたいボタンをクリックします。[プロパティ]から選択し、ポップアップFlatStyleに設定します。次に、プロパティをに 変更します。BackColorTransparent

これにより、ボタンが透明になります。

PictureBoxただし、この方法で透過的にしたい場合は機能しません。

通常の背景と背景画像でのみ機能します。それがうまくいくことを願っています...

于 2015-07-29T10:09:10.937 に答える
5
buttonLink.FlatStyle = FlatStyle.Flat; 
buttonLink.BackColor = Color.Transparent;
buttonLink.FlatAppearance.MouseDownBackColor = Color.Transparent;
buttonLink.FlatAppearance.MouseOverBackColor = Color.Transparent;
于 2013-03-31T23:45:31.763 に答える
0

参照:

元の記事とコードは次の場所にあります。

マウスが無効なコントロールの上にあるときにツールチップを表示する

@codeProject by tetsushmz

コード:

public class TransparentSheet : ContainerControl
{
    public TransparentSheet()
    {
        // Disable painting the background.
        this.SetStyle(ControlStyles.Opaque, true);
        this.UpdateStyles();

        // Make sure to set the AutoScaleMode property to None
        // so that the location and size property don't automatically change
        // when placed in a form that has different font than this.
        this.AutoScaleMode = AutoScaleMode.None;

        // Tab stop on a transparent sheet makes no sense.
        this.TabStop = false;
    }

    private const short WS_EX_TRANSPARENT = 0x20;

    protected override CreateParams CreateParams
    {
        [SecurityPermission(SecurityAction.LinkDemand, UnmanagedCode = true)]
        get
        {
            CreateParams l_cp;
            l_cp = base.CreateParams;
            l_cp.ExStyle = (l_cp.ExStyle | WS_EX_TRANSPARENT);
            return l_cp;
        }
    }
}

説明:

実行する必要があるのは、無効にしたTextBox(コメントの1つで言及した)のオーバーレイとして指定されたコントロールを使用することです。オーバーレイコントロールのClickイベントに登録すると、無効になっているコントロールをクリックできます。

私はこのアプローチに反対することを強くお勧めし、それは一種のハックだと感じています。その上にオーバーレイコントロールがある無効なコントロールを使用する代わりに、実際には別のアプローチを探す必要があります。

おそらく、別のUIを使用するか、少なくともUserControlでラップして、この厄介なロジックを分離します。

于 2012-05-26T14:48:28.170 に答える
0

ボタンのbackgroundプロパティをtransparentに設定しても、境界線は残ります。完全に透明なボタンが必要な場合は、次の2つのいずれかを実行します。

透明なパネルを作成し、Clickイベントにメソッドを割り当てます

またはできれば

BackColor(transparentに設定)のみで埋められるカスタムUserControlを作成し、Clickイベントにメソッドを割り当てます。

public class Invisible_Button : UserControl
{
    protected override void OnMouseMove(MouseEventArgs e)
    {
        base.OnMouseMove(e);
        this.Cursor = Cursors.Hand;
    }
    protected override void OnPaint(PaintEventArgs e)
    {
        base.OnPaint(e);
        e.Graphics.FillRectangle(new SolidBrush(this.BackColor), 0, 0, this.Width, this.Height);
    }
}
于 2016-09-23T16:50:20.960 に答える
-1

やってみましたbutton.Visible = falseか?あなたが望むのがそれを隠すことだけであるならば、これは仕事をします。

于 2012-05-26T04:47:28.503 に答える