هل ترغب في إجراء تغييرات على TreeView أثناء تحرير العقدة (C#)؟

StackOverflow https://stackoverflow.com/questions/72556

  •  09-06-2019
  •  | 
  •  

سؤال

أنا ألعب باستخدام عنصر تحكم TreeView من Microsoft وأحاول فرض تحديث بيانات من بعض الأنواع أثناء تحرير تسمية العقدة، على غرار UpdateData للشبكة.

بشكل أساسي، في المحرر الخاص بي، لدي زر "حفظ" وعنصر تحكم TreeView هذا:ما أريده هو عندما أقوم بتحرير تسمية العقدة في TreeView، إذا قمت بالنقر فوق الزر "حفظ" أريد أن أكون قادرًا على الالتزام بتسمية العقدة التي كنت أقوم بتحريرها.

هل كانت مفيدة؟

المحلول

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

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

treeView.LabelEdit = false;
treeView.LabelEdit = true;

نصائح أخرى

سأقبل الإجابة رغم أنها غير موثقة حقًا:هل لديها أو لا لديها مثل هذه الطريقة؟في الواقع أنت لم تجب على هذا، فقط أعادت السؤال لي.

وفي الوقت نفسه وجدت نفس الحل المبتكر من خلال فرض التركيز على بعض عناصر التحكم الأخرى (ليس أنيقًا جدًا ولكنه يعمل)، على الرغم من أنه أصعب قليلاً بالنسبة لي منذ أن أستخدم TreeView كجزء من UserControl.

هل تحتاج حقًا إلى زر حفظ؟

يمكنك الاستماع إلى نهاية تحرير العقدة - على سبيل المثال من خلال الاستماع إلى مفتاح "الإرجاع" في حدث KeyDown الخاص بـ TreeView.إذا كنت تقوم بتحرير شيء ما (اكتشف ذلك باستخدام SelectedNode.IsEditing)، فأنت تعلم أن لديك التزامًا.يمكنك بعد ذلك الالتزام بهذا لأشياء تحديث البيانات الخاصة بك.إذا كنت تريد أن تكون قادرًا على تحرير العديد من العقد المختلفة وحفظها جميعًا في النهاية، فأنت بحاجة إلى إضافة كل عقدة تم تحريرها إلى مجموعة من نوع ما، ثم عندما تنقر على زر الحفظ، قم بالتكرار خلال هذه المجموعة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top