2010-03-23 4 views
1

잘못된 값을 입력 할 때 컨트롤의 최대/최소값을 표시해야하는 유효성 검사 코드가 있습니다. 내 생성자에서내 C++/CLI 툴팁이 나타나지 않는 이유는 무엇입니까?

내가 이렇게 :

m_wndToolTip = gcnew ToolTip(this->components); 
m_wndToolTip->AutoPopDelay = 5000; 
m_wndToolTip->InitialDelay = 10; 
m_wndToolTip->ReshowDelay = 250; 
m_wndToolTip->ShowAlways = true;// Force the ToolTip text to be displayed whether or not the form is active. 

이 내 검증 반사 코드 :

void MyGUI::IndicateValidationResult(Windows::Forms::Control^ control, bool isValid, String^ invalidReason) 
{ 
    // If the validation failed, make the background red. If not, turn it white. 
    if(isValid) 
    { 
     control->BackColor = Drawing::Color::White; 
     m_wndToolTip->Hide(control); 
    } 
    else 
    { 
     control->BackColor = Drawing::Color::LightCoral; 
     m_wndToolTip->Show(invalidReason, control); 
    } 
} 

... 내 텍스트 상자에 배포판에있는 다양한 ValueChanged 방법에서 호출됩니다. 나는 쇼 및 또한 SetToolTipactive = true의 조합을 사용하여 시도했지만 아무것도 작동하지 않는 것 같습니다.

나는 another question asking about tooltips을 보았고 표시를 위해 근처의 레이블을 설정하려고 시도했지만 해결되지는 않습니다. 도구 설명은 내 System::Windows::Forms::Form 파생 된 양식의 멤버 변수로, 범위를 벗어나는 것을 막습니다.

나는 분명한 뭔가를 놓치고 있습니까?

답변

1

시도했을 때 코드가 올바르게 작동했지만 눈에 띄는 실수는 없습니다. 텍스트 상자의 Validating 이벤트를 사용하여 다음과 같이 호출했습니다.

bool ok; 

System::Void textBox1_Validating(System::Object^ sender, System::ComponentModel::CancelEventArgs^ e) { 
    e->Cancel = !ok; 
    IndicateValidationResult(textBox1, ok, "invalid"); 
    ok = !ok; 
} 

주의 할 점은 툴팁이 불안정 할 수 있습니다. 네이티브 Windows 구성 요소에는 도구 설명이 이전에 시간 초과되었을 때 다시 표시되지 않도록하는 "기능"이 있습니다. ErrorProvider 구성 요소는이 작업을 수행하는 데 더 좋은 마우스 트랩입니다.

관련 문제