기존 Windows Forms 응용 프로그램에 컨텍스트 감각 도움말을 추가하는 좋은 방법?

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

문제

기존 WinForms 앱인 Big One에 데이터베이스 중심 툴팁을 추가해야합니다. C# 및 .NET 3.5

이를 위해 새로운 컨트롤을 삭제하지 않아도되고 사용자는 도움말 툴팁을 편집 할 수 있어야합니다.

가장 좋은 추측은 기존 컨트롤을 새로운 속성을 포함하는 새로운 유형으로 랩핑하여 "FieldHelpName"과 같은 새 속성을 할당하고 관리 모듈에서이를 사용할 수 있도록 사용자가 필드를 명확하게 식별 할 수 있도록하는 것입니다. 각 형태에 ScreenId를 할당하고 각 FieldHelpName 레코드는 ScreenID에 연결됩니다. 애플리케이션 시작시 모든 도움말 내용을로드하고 Form-Load에서 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