CSHARPWINDOWSFORM Telegram 92
بسم الله الرحمن الرحيم

سوف نعيد شرح كيف تقوم بعمل textbox مخصص
يحتوي على ميزتين لاتوجد في textbox الافتراضي



في البرمجة يوجد نوعان من البيانات
1- بيانات معرفة بداخل النظام مثل int,char,string
2- وبيانات من تعريف المستخدم (المبرمج) مثل الكلاسات التراكيب

كذالك ينطبق نفس الكلام السابق على أدوات التحكم يوجد أدوات تحكم معرفة بداخل نظام اللغة مثل الأدوات الموجودة مسبقا
وأيضا أدوات تحكم مخصصه يقوم بتعريفها المبرمج
ويمكن للمبرمج من انشاء أدوات تحكم بعده طرق
الأولى عنطريق User Control
الثانية عنطريق الوراثة وهذا ماسوف نقوم بشرحه في موضوع اليوم

لنبدأ:
قم بعمل مشروع Windows Form

بعد ان يتم فتح المشروع

من قائمة project انشاء كلاس
قم بتسمية الكلاس
في شرحنا سوف نقوم بتسمية الكلاس MyTextBox

public class MyTextBox : System.Windows.Forms.TextBox
{
public int NumberOfDigits
{
get
{
int digits = 0;
foreach (char c in Text)
{
if (Char.IsDigit(c)) digits++;
}
return digits;
}
}


protected override void OnKeyPress(KeyPressEventArgs e)
{


if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar))
{
e.Handled = true;
}

base.OnKeyPress(e);
}
}
في البداية قمنا بالوراثة من الفئة TextBox وقمنا بكتابة أسماء الفضاءات
وذلك لانك عندما تقم بانشاء كلاس لايتم تضمين فضاء System.Windows.Forms
بامكانك تضمينه وحذف أسماء الفضاءات التي قبل TextBox

الخاصية الأولى وظيفتها تقوم بمعرفه عدد خانات الأرقام المكتوبة في MyTextBox خاصية قراءة فقط لذالك عندما تشاهدها في قائمة الخصائص ستلاحظ ان لون النص مختلف عن باقي الخصائص وذلك يعني انك لاتستطيع اسناد قيمه لها وذلك لانها خاصية get فقط
ولكي تقوم بمعرفه كيف تستدعي هذه الخاصية بهذا الشكل
MessageBox.Show(myTextBox1.NumberOfDigits.ToString());

الان ننتقل الى الدالة OnKeyPress
دالة ناسخة من نوع void تنسخ الدالة الوهمية الموجودة في الكلاس Control
هذه الدالة تقوم بفحص ادخال المستخدم اذا كانت حروف تمنع الكتابة في MyTextBox
اذا كانت ارقام تسمح بالكتابة
بعد ذالك قمنا بارسال وسيط هذه الدالة الى الدالة الأساسية باستخدام الكلمة base
وسيط هذه الدالة هوعبارة عن حدث يحدث عند الضغط بازرار الكيبورد


الان انتهينا من عمل أداة التحكم الجديدة
قم الان بالضغط على اختصار ctrl+shift+B
لكي يتم إعادة بناء المشروع ومن ثم اذهب الى قائمة ToolBox
وابحث عن الأداة الجديدة MyTextBox
قم باضافتها للفورم وقم بتنفيذ ستلاحظ انك لن تستطيع كتابة حروف
تقبل ارقام فقط
شيء ممل ان تكون هذه الأداة لاتقبل الا ارقام فقط ما رائيك ان نجعلها في حالة تدعم ارقام وفي حالة أخرى تدعم سلسلة نصية سوا كانت ارقام وحروف

ماهي هذه الحالات تابع معي

نقوم بتعريف متغير bool numbersOnly ارقام فقط
ونقوم بتعريف خاصية لهذا المتغير
public bool NumbersOnly
{
get { return this.numbersOnly; }
set { this.numbersOnly = value; }
}
في حالة كانت قيمة هذه الخاصية true سوف يتم كتابة ارقام فقط
اذا كانت false ارقام وحروف
تم جعل قيمتها الافتراضية ب false

يمكنك تغيير قيمة هذه الخاصية الى true من قائمة الخصائص بعد ما نكمل الشرح
public MyTextBox()
{
numbersOnly = false;
}
اسناد القيمة الافتراضية للخاصية داخل دالة البناء للفئة

الان نقوم باخر خطوة وهي إضافة شرط في دالة OnKeyPress

protected override void OnKeyPress(KeyPressEventArgs e)
{


if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar)&& NumbersOnly==true)
{
e.Handled = true;
}

base.OnKeyPress(e);
}
}

الكود بالشكل النهائي :
public class MyTextBox : System.Windows.Forms.TextBox
{
public int NumberOfDigits
{
get
{
int digits = 0;
foreach (char c in Text)
{
if (Char.IsDigit(c)) digits++;
}
return digits;
}
}
👍1



tgoop.com/CsharpWindowsForm/92
Create:
Last Update:

بسم الله الرحمن الرحيم

سوف نعيد شرح كيف تقوم بعمل textbox مخصص
يحتوي على ميزتين لاتوجد في textbox الافتراضي



في البرمجة يوجد نوعان من البيانات
1- بيانات معرفة بداخل النظام مثل int,char,string
2- وبيانات من تعريف المستخدم (المبرمج) مثل الكلاسات التراكيب

كذالك ينطبق نفس الكلام السابق على أدوات التحكم يوجد أدوات تحكم معرفة بداخل نظام اللغة مثل الأدوات الموجودة مسبقا
وأيضا أدوات تحكم مخصصه يقوم بتعريفها المبرمج
ويمكن للمبرمج من انشاء أدوات تحكم بعده طرق
الأولى عنطريق User Control
الثانية عنطريق الوراثة وهذا ماسوف نقوم بشرحه في موضوع اليوم

لنبدأ:
قم بعمل مشروع Windows Form

بعد ان يتم فتح المشروع

من قائمة project انشاء كلاس
قم بتسمية الكلاس
في شرحنا سوف نقوم بتسمية الكلاس MyTextBox

public class MyTextBox : System.Windows.Forms.TextBox
{
public int NumberOfDigits
{
get
{
int digits = 0;
foreach (char c in Text)
{
if (Char.IsDigit(c)) digits++;
}
return digits;
}
}


protected override void OnKeyPress(KeyPressEventArgs e)
{


if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar))
{
e.Handled = true;
}

base.OnKeyPress(e);
}
}
في البداية قمنا بالوراثة من الفئة TextBox وقمنا بكتابة أسماء الفضاءات
وذلك لانك عندما تقم بانشاء كلاس لايتم تضمين فضاء System.Windows.Forms
بامكانك تضمينه وحذف أسماء الفضاءات التي قبل TextBox

الخاصية الأولى وظيفتها تقوم بمعرفه عدد خانات الأرقام المكتوبة في MyTextBox خاصية قراءة فقط لذالك عندما تشاهدها في قائمة الخصائص ستلاحظ ان لون النص مختلف عن باقي الخصائص وذلك يعني انك لاتستطيع اسناد قيمه لها وذلك لانها خاصية get فقط
ولكي تقوم بمعرفه كيف تستدعي هذه الخاصية بهذا الشكل
MessageBox.Show(myTextBox1.NumberOfDigits.ToString());

الان ننتقل الى الدالة OnKeyPress
دالة ناسخة من نوع void تنسخ الدالة الوهمية الموجودة في الكلاس Control
هذه الدالة تقوم بفحص ادخال المستخدم اذا كانت حروف تمنع الكتابة في MyTextBox
اذا كانت ارقام تسمح بالكتابة
بعد ذالك قمنا بارسال وسيط هذه الدالة الى الدالة الأساسية باستخدام الكلمة base
وسيط هذه الدالة هوعبارة عن حدث يحدث عند الضغط بازرار الكيبورد


الان انتهينا من عمل أداة التحكم الجديدة
قم الان بالضغط على اختصار ctrl+shift+B
لكي يتم إعادة بناء المشروع ومن ثم اذهب الى قائمة ToolBox
وابحث عن الأداة الجديدة MyTextBox
قم باضافتها للفورم وقم بتنفيذ ستلاحظ انك لن تستطيع كتابة حروف
تقبل ارقام فقط
شيء ممل ان تكون هذه الأداة لاتقبل الا ارقام فقط ما رائيك ان نجعلها في حالة تدعم ارقام وفي حالة أخرى تدعم سلسلة نصية سوا كانت ارقام وحروف

ماهي هذه الحالات تابع معي

نقوم بتعريف متغير bool numbersOnly ارقام فقط
ونقوم بتعريف خاصية لهذا المتغير
public bool NumbersOnly
{
get { return this.numbersOnly; }
set { this.numbersOnly = value; }
}
في حالة كانت قيمة هذه الخاصية true سوف يتم كتابة ارقام فقط
اذا كانت false ارقام وحروف
تم جعل قيمتها الافتراضية ب false

يمكنك تغيير قيمة هذه الخاصية الى true من قائمة الخصائص بعد ما نكمل الشرح
public MyTextBox()
{
numbersOnly = false;
}
اسناد القيمة الافتراضية للخاصية داخل دالة البناء للفئة

الان نقوم باخر خطوة وهي إضافة شرط في دالة OnKeyPress

protected override void OnKeyPress(KeyPressEventArgs e)
{


if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar)&& NumbersOnly==true)
{
e.Handled = true;
}

base.OnKeyPress(e);
}
}

الكود بالشكل النهائي :
public class MyTextBox : System.Windows.Forms.TextBox
{
public int NumberOfDigits
{
get
{
int digits = 0;
foreach (char c in Text)
{
if (Char.IsDigit(c)) digits++;
}
return digits;
}
}

BY برمجة تطبيقات الويندوز C# Programming


Share with your friend now:
tgoop.com/CsharpWindowsForm/92

View MORE
Open in Telegram


Telegram News

Date: |

Matt Hussey, editorial director of NEAR Protocol (and former editor-in-chief of Decrypt) responded to the news of the Telegram group with “#meIRL.” Commenting about the court's concerns about the spread of false information related to the elections, Minister Fachin noted Brazil is "facing circumstances that could put Brazil's democracy at risk." During the meeting, the information technology secretary at the TSE, Julio Valente, put forward a list of requests the court believes will disinformation. While some crypto traders move toward screaming as a coping mechanism, many mental health experts have argued that “scream therapy” is pseudoscience. Scientific research or no, it obviously feels good. Concise Joined by Telegram's representative in Brazil, Alan Campos, Perekopsky noted the platform was unable to cater to some of the TSE requests due to the company's operational setup. But Perekopsky added that these requests could be studied for future implementation.
from us


Telegram برمجة تطبيقات الويندوز C# Programming
FROM American