طريقة جيدة لإضافة مساعدة حساسة للسياق إلى تطبيق نماذج Windows الموجودة؟

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

سؤال

لا بد لي من إضافة أدوات تلميحات تراصك قاعدة البيانات إلى تطبيق WinForms موجود، واحدة كبيرة. C # و .NET 3.5

أرغب في تجنب الاضطرار إلى إسقاط عناصر تحكم جديدة لهذا الغرض، ويجب أن يكون المستخدم قادرا على تحرير تلميحات أدوات المساعدة.

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

أبحث عن اقتراحات حول كيفية القيام بهذه العملية أفضل أو لمعرفة ما إذا كان هناك أفضل الممارسات حول كيفية القيام بذلك ... لذلك يتم تقدير أي مساعدة حقا. شكرا.

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

المحلول 2

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

نصائح أخرى

لماذا تنقل إلى هذه الأطوال؟

يمكنك إنجاز نفس الشيء مع شيء أبسط:

Private _ToolTipList As New List(Of ToolTip)

<Extension()> _
Public Function CreateForm(ByVal formType As Type) As Form
  If (formType Is Nothing) Then
    Throw New ArgumentNullException("formType")
  End If
  If (Not GetType(Form).IsAssignableFrom(formType)) Then
    Throw New InvalidOperationException _
        (String.Format("The type '{0}' is not a form.", formType.FullName))
  End If

  Dim ctor = formType.GetConstructor(New Type() {})
  If (ctor Is Nothing) Then
    Throw New InvalidOperationException _
        (String.Format _
            ("The type '{0}' does not have a public default constructor.", _
            formType.FullName))
  End If

  Dim frm As Form = ctor.Invoke(New Object() {})
  Dim toolTip As New ToolTip(New Container())
  LoadToolTipData(toolTip, frm)
  _ToolTipList.Add(toolTip)

  Return frm

End Function

Private Sub LoadToolTipData(ByVal toolTip As ToolTip, _
                            ByVal ctrl As Control, _
                   Optional ByVal parentHierarchy As String = "")

  Dim currentHierarchy = parentHierarchy & "." & ctrl.Name
  Dim toolTipText = LoadDataFromDb(currentHierarchy)
  If Not String.IsNullOrEmpty(toolTipText) Then
    toolTip.SetToolTip(ctrl, toolTipText)
  End If

  For Each c As Control In ctrl.Controls
    LoadToolTipData(toolTip, c, currentHierarchy)
  Next

End Sub

Private Function LoadDataFromDb(ByVal key As String) As String
  Return String.Empty
End Function
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top