كيفية إنشاء زر تبديل في vb.net


مرحبًا، أحتاج إلى إنشاء زر يُستخدم لإخفاء كائن التسمية أو إظهاره مرة أخرى.
لذلك أحتاج إلى الزر عند الضغط عليه ليغوص مثل المفتاح ويجعل الملصق يختفي، وعند الضغط عليه مرة أخرى، يرتفع ويظهر الملصق.

أي فكرة عن كيفية إنشاء زر تبديل؟

الحل 2

يمكنك استخدام خانة الاختيار لهذا الغرض.
يمكنك أيضًا استخدام زر (ضغط) عادي، في معالج حدث النقر، فقط قم بتبديل الزر Visible خاصية التسمية:

VB
myLabel.Visible = Not myLabel.Visible

الحل 3

زر التبديل ليس أكثر من زر بسيط
يسأل عن قيمة (على سبيل المثال هل هذا منطقي صحيح)
وبعد ذلك، إذا كانت بسيطة if(boolean == true) افعل هذا وإلا افعل ذلك

ج #
boolean boo = false;

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

الحل 4

ببساطة استخدم هذا الرمز

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

الحل 5

حصلت على هذا من مكان ما، ويعمل مثل السحر!!!
1. انقر بزر الماوس الأيمن فوق المشروع في VS وحدد “إضافة” ثم “التحكم في المستخدم…”
2. قم بتسمية ملفك الجديد “Toggle.vb”
3. الصق الكود أدناه (يرجى الانتباه إلى الخطوة 4):

VB.NET
نظام الواردات.الرسم
نظام الواردات.الرسم
نظام الواردات.الرسم.Drawing2D
واردات System.Windows.Forms

تبديل الطبقة العامة
يرث System.Windows.Forms.UserControl

_تم تحديده بشكل خاص على أنه منطقي
تم التحقق من الملكية العامة على أنها منطقية
يحصل
تم التحقق من الإرجاع
نهاية الحصول على
تعيين (قيمة ByVal كقيمة منطقية)
إذا لم يكن _checked.Equals(value) ثم
_الفحص = القيمة
Me.OnCheckedChanged()
إنهاء إذا
نهاية المجموعة
نهاية الملكية

فرعي محمي قابل للتجاوز OnCheckedChanged()
RaiseEvent CheckedChanged(Me, EventArgs.Empty)
نهاية الفرعية

حدث عام تم التحقق منه (مرسل ByVal ككائن، ByVal e As EventArgs)

التجاوزات المحمية Sub OnMouseClick(e As MouseEventArgs)
Me.Checked = ليس أنا
أنا. إبطال()
MyBase.OnMouseClick(e)
نهاية الفرعية

التجاوزات المحمية Sub OnPaint(ByVal e As PaintEventArgs)
Me.OnPaintBackground(e)
e.Graphics.SmoothingMode = SmoothingMode.AntiAlias

باستخدام المسار = New GraphicsPath ()
خافت د = الحشو.الكل
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)
المسار.أغلق الشكل()
e.Graphics.FillPath(إذا (تم التحديد، Brushes.DarkGray، Brushes.LightGray)، المسار)
ص = الارتفاع – 1
ديم المستقيم = إذا (محدد، نظام جديد. رسم. مستطيل (العرض – ص – 1، 0، ص، ص)، نظام جديد. رسم. مستطيل (0، 0، ص، ص))
e.Graphics.FillEllipse(إذا (محدد، Brushes.Green، Brushes.LightSlateGray)، rect)
إنهاء الاستخدام
نهاية الفرعية
نهاية الفصل

4. قم بالتبديل إلى النموذج الخاص بك واسحب عنصر التحكم “التبديل” من ToolBox إلى النموذج (في بعض الحالات، لا يظهر زر التبديل في ToolBox على الفور. في هذه الحالة إلى ما يلي:
اذهب إلى أدوات > خيارات > مصمم نماذج Windows > عام
في الجزء السفلي من القائمة ستجد Toolbox > AutoToolboxPopulate والتي تكون إعداداتها الافتراضية عند التثبيت الجديد False. قم بتعيينه على أنه صحيح ثم أعد بناء الحل الخاص بك. يجب إضافة عناصر تحكم المستخدم الموجودة في الحل الخاص بك تلقائيًا إلى مربع الأدوات. قد تضطر إلى إعادة تحميل الحل أيضًا.

إذا كان عنصر تحكم المستخدم الخاص بك موجودًا في مكتبة، فيمكنك إضافة هذا إلى صندوق الأدوات الخاص بك باستخدامه
صندوق الأدوات -> انقر بزر الماوس الأيمن -> اختر العناصر -> تصفح
حدد التجميع الخاص بك باستخدام عنصر تحكم المستخدم.
5. يمكن تغيير الحجم والإعدادات مثل التحكم القياسي
6. يمكن تغيير الألوان بطريقة OnPaint الخاصة بـ Toggle Class
كود سي#:
باستخدام System.Drawing؛
باستخدام System.Drawing.Drawing2D؛
باستخدام System.Windows.Forms؛

مساحة الاسم Your_Project_Name
{
تبديل الفئة: CheckBox
{
تبديل عام ()
{
SetStyle(ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint, true);
الحشو = الحشو الجديد (6)؛
}
تجاوز محمي باطل OnPaint (PaintEventArgs e)
{
this.OnPaintBackground(e);
e.Graphics.SmoothingMode = SmoothingMode.AntiAlias;
باستخدام (var path = new GraphicsPath())
{
var d = Padding.All;
فار ص = هذا. الارتفاع – 2 * د؛
path.AddArc(d, d, r, r, 90, 180);
path.AddArc(this.Width – r – d, d, r, r, -90, 180);
path.CloseFiger();
e.Graphics.FillPath(تم التحديد؟ Brushes.DarkGray : Brushes.LightGray, path);
ص = الارتفاع – 1؛
var rect = تم الفحص ؟ نظام جديد. رسم. مستطيل (العرض – ص – 1، 0، ص، ص)
: System.Drawing.Rectangle(0, 0, r, r);
e.Graphics.FillEllipse(تم التحديد؟ Brushes.Green : Brushes.LightSlateGray, rect);
}
}
}
}

أدناه هو الرابط للمصدر الأصلي:

[^]

الحل 1

コメント

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