【解決方法】vb.net でトグル ボタンを作成する方法

プログラミングQA


こんにちは、ラベル オブジェクトを非表示にしたり、再度表示したりするために使用するボタンを作成する必要があります。
そのため、ボタンを押すとスイッチのように沈んでラベルが消え、もう一度押すと盛り上がってラベルが表示されるようにする必要があります。

トグルボタンを作成する方法はありますか?

解決策 4

このコードを使用するだけです

VB
checkBox.Appearance = System.Windows.Forms.Appearance.Button

解決策 5

私はどこかからこれを手に入れました、そしてそれは魅力のように働きます!!!
1. VS でプロジェクトを右クリックし、[追加]、[ユーザー コントロール…]の順に選択します。
2. 新しいファイルに「Toggle.vb」という名前を付けます
3. 以下のコードを貼り付けます (手順 4 に注意してください)。

VB.NET
System.Drawing をインポートします
System.Drawing をインポートします
System.Drawing.Drawing2D をインポートします
System.Windows.Forms をインポートします

公開クラス切り替え
System.Windows.Forms.UserControl を継承

Private _checked ブール値として
ブール値としてチェックされるパブリック プロパティ
得る
_checked を返す
エンドゲット
Set(ByVal 値をブール値として)
If Not _checked.Equals(value) Then
_checked = 値
Me.OnCheckedChanged()
終了条件
エンドセット
End プロパティ

保護されたオーバーライド可能なサブ OnCheckedChanged()
RaiseEvent CheckedChanged(Me, EventArgs.Empty)
サブ終了

Public Event CheckedChanged (オブジェクトとしての ByVal 送信者、EventArgs としての ByVal e)

Protected Overrides Sub OnMouseClick(e As MouseEventArgs)
Me.Checked = Not Me.Checked
Me.Invalidate()
MyBase.OnMouseClick(e)
サブ終了

Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)
Me.OnPaintBackground(e)
e.Graphics.SmoothingMode = SmoothingMode.AntiAlias

path = New GraphicsPath() の使用
Dim d = Padding.All
Dim r = Me.Height – 2 * d
path.AddArc(d, d, r, r, 90, 180)
path.AddArc(Me.Width – r – d, d, r, r, -90, 180)
パス.CloseFigure()
e.Graphics.FillPath(If(Checked, Brushes.DarkGray, Brushes.LightGray), パス)
r = 高さ – 1
Dim rect = If(Checked, New System.Drawing.Rectangle(Width – r – 1, 0, r, r), New System.Drawing.Rectangle(0, 0, r, r))
e.Graphics.FillEllipse(If(Checked, Brushes.Green, Brushes.LightSlateGray), rect)
使用終了
サブ終了
クラス終了

4. フォームに切り替えて、「トグル」コントロールをツールボックスからフォームにドラッグします (トグル ボタンがツールボックスにすぐに表示されない場合があります。その場合は、次のようにします。
に行く ツール > オプション > Windows フォーム デザイナー > 一般
リストの一番下に、Toolbox > AutoToolboxPopulate があり、新規インストールではデフォルトで False に設定されています。 true に設定してから、解決策を再構築します。 解決策内のユーザー コントロールは、ツールボックスに自動的に追加されます。 解決策のリロードも必要になる場合があります。

ユーザー コントロールがライブラリにある場合は、これをツールボックスに追加できます。
ツールボックス -> 右クリック -> アイテムの選択 -> ブラウズ
ユーザー コントロールでアセンブリを選択します。
5.サイズと設定は標準コントロールのように変更できます
6. Toggle クラスの OnPaint メソッドで色を変更可能
C# コード:
System.Drawing を使用します。
System.Drawing.Drawing2D を使用します。
System.Windows.Forms を使用します。

名前空間 Your_Project_Name
{
クラストグル:チェックボックス
{
public Toggle()
{
SetStyle(ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint, true);
パディング = 新しいパディング (6);
}
protected override void OnPaint(PaintEventArgs e)
{
this.OnPaintBackground(e);
e.Graphics.SmoothingMode = SmoothingMode.AntiAlias;
(var path = new GraphicsPath()) を使用
{
var d = Padding.All;
var r = this.Height – 2 * d;
path.AddArc(d, d, r, r, 90, 180);
path.AddArc(this.Width – r – d, d, r, r, -90, 180);
path.CloseFigure();
e.Graphics.FillPath(Checked ? Brushes.DarkGray : Brushes.LightGray, パス);
r = 高さ – 1;
var rect = チェック済み? new System.Drawing.Rectangle(Width – r – 1, 0, r, r)
: 新しい System.Drawing.Rectangle(0, 0, r, r);
e.Graphics.FillEllipse(Checked ? Brushes.Green : Brushes.LightSlateGray, rect);
}
}
}
}

以下は、元のソースへのリンクです。
https://stackoverflow.com/questions/4793105/toggle-button-control[^]

解決策 2

この目的のためにチェックボックスを使用できます。
通常の (プッシュ) ボタンを使用することもできます。クリック イベント ハンドラーでは、 Visible ラベルのプロパティ:

VB
myLabel.Visible = Not myLabel.Visible

解決策 3

トグル ボタンは単純なボタンにすぎません。
値を要求します (たとえば、このブール値は true です)
その後、単純な if(boolean == true) do this else do that

C#
boolean boo = false;

buttonPressed()
{
  if(boo == true)
  {
    boo = false;
    doSomething.Visible = true;
  }
  else
  {
    boo = true;
    doSomething.Visible = false;
  }
}

解決策 1

このリンクを参照すると、アイデアが得られます
http://www.asp.net/ajaxLibrary/AjaxControlToolkitSampleSite/ToggleButton/ToggleButton.aspx[^]

コメント

タイトルとURLをコピーしました