في هذا السياق، يظهر أنك تسعى لفهم كيفية إنشاء ستوب ووتش (stopwatch) في لغة البرمجة C# باستخدام بيئة التطوير Visual Studio 2012، حيث يتم تشغيل الستوب ووتش عند بدء الكتابة في مربع النص ويتوقف عند الضغط على زر Enter. وبالإضافة إلى ذلك، يجب أن يبدأ من جديد عند بدء الكتابة لكل كلمة ويتوقف مرة أخرى عند الضغط على Enter، ثم يقوم بعرض الأوقات المسجلة لكل كلمة.
أولاً، يتطلب ذلك استخدام الـ Stopwatch class في C# لقياس الوقت. يمكنك استخدام حدث TextChanged لمربع النص للكشف عن بداية الكتابة واستخدام حدث KeyPress للكشف عن ضغط زر Enter. بمجرد اكتشاف بداية الكتابة، يمكنك تشغيل الستوب ووتش، وعند الضغط على Enter، يمكنك توقيفه وعرض الوقت المستغرق.
الكود التالي يوضح كيف يمكن تحقيق هذا السيناريو:
csharpusing System;
using System.Diagnostics;
using System.Windows.Forms;
class Program
{
static Stopwatch stopwatch = new Stopwatch();
static string lastWord = "";
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
TextBox textBox = new TextBox();
textBox.TextChanged += TextBox_TextChanged;
textBox.KeyPress += TextBox_KeyPress;
Form form = new Form();
form.Controls.Add(textBox);
Application.Run(form);
}
private static void TextBox_TextChanged(object sender, EventArgs e)
{
if (!stopwatch.IsRunning)
{
stopwatch.Start();
}
}
private static void TextBox_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (char)Keys.Enter)
{
if (stopwatch.IsRunning)
{
stopwatch.Stop();
TimeSpan elapsed = stopwatch.Elapsed;
DisplayElapsedTime(elapsed, lastWord);
// Reset stopwatch for the next word
stopwatch.Reset();
}
}
else
{
lastWord = ((TextBox)sender).Text;
}
}
private static void DisplayElapsedTime(TimeSpan elapsed, string word)
{
string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}",
elapsed.Hours, elapsed.Minutes, elapsed.Seconds,
elapsed.Milliseconds / 10);
Console.WriteLine($"Word: '{word}', Elapsed Time: {elapsedTime}");
}
}
هذا الكود يستخدم Windows Forms لإنشاء نافذة تحتوي على مربع نص، ويستجيب لحدثي TextChanged و KeyPress لتتبع بداية الكتابة والضغط على Enter على التوالي. يقوم بقياس الوقت باستخدام Stopwatch ويعرضه لكل كلمة عند الضغط على Enter.
المزيد من المعلومات
في عملية تطوير الشيفرة المصدرية أعلاه، تم استخدام لغة البرمجة C# مع بيئة تطوير Visual Studio 2012. الكود يستفيد من فئة Stopwatch
المدمجة لقياس الوقت بدقة، ويستخدم حدث TextChanged
لاستشعار بداية الكتابة في مربع النص، وحدث KeyPress
لاستشعار الضغط على زر Enter.
قمنا بإنشاء متغير stopwatch
لتتبع مضي الوقت ومتغير lastWord
لتخزين آخر كلمة تم كتابتها. تم تكامل هذه المتغيرات والأحداث بشكل جيد لتحقيق الغرض المطلوب.
قمنا بإنشاء واجهة مستخدم بسيطة باستخدام Windows Forms وتضمنا مربع نص وفتحنا تطبيقه باستخدام Application.Run(form)
. الكود يُظهر كيف يمكن دمج المكونات والحداث بشكل فعال لتحقيق الوظيفة المطلوبة.
يتم استخدام الدالة DisplayElapsedTime
لعرض الوقت المنقضي في تنسيق مناسب. يتم إعادة تعيين stopwatch
بعد توقفه لقياس الوقت للكلمة التالية.
يمكنك تكامل هذا الكود في تطبيقك الأكبر أو تعديله وفقًا لاحتياجات محددة أخرى. يركز الكود على البساطة والوظائف الأساسية للتوضيح، ويمكن تحسينه أو تعديله وفقًا لمتطلباتك الخاصة.