여러 양식에 특정 동작을 추가하고 싶습니다. 이 경우 입력 유효성 검사가 실패 할 때 트리거되는 풍선 메시지입니다. 가장 쉬운 해결책은 정적 클래스로 만들고 각 필드의 onvalidate 이벤트의 실패 조건에서 호출하는 것입니다.여러 양식에 시각적 동작 추가
public static class BalloonMessage
{
private static ToolTip _toolTip = new ToolTip()
{
Active = false,
IsBalloon = true
};
public static void Show(string message,Control control)
{
if (!_toolTip.Active)
{
//4 year old bug in tooltip doesn't place balloon "tail" correctly
// when first attached to a control. Microsoft still hasn't fixed it.
_toolTip.Show(message, control);
_toolTip.Active = true;
_toolTip.Show(message, control);
}
}
public static void Clear()
{
_toolTip.Active = false;
}
}
private void textBox1_Validating(object sender, CancelEventArgs e)
{
if (textBox1.Text.Contains(" "))
{
BalloonMessage.Show(String.Format("Field cannot contain spaces"), textBox1);
e.Cancel = true;
}
else
{
BalloonMessage.Clear();
}
}
이 날이 가장 좋은 방법 경우 내가 궁금하네요 명시 적으로 의존하지만 없이 어떤 형태로 BalloonMessage를 사용할 수 있습니다. 샘플 코드에는 표시되지 않지만 프로덕션 코드는 수많은 상호 연관된 MVP 트라이어드를 사용합니다. 유효성 검사는 발표자에서 수행되며 폼의 컨트롤에 직접 액세스 할 수 없습니다. 따라서 balloonmessage에 표시하기 위해 검증 결과와 오류 메시지를보기로 다시 전달해야합니다.
덧붙여서 궁금한 점이 있다면 EM_SHOWBALLOONTIP
을 포장하는 대신 툴팁을 사용하고 있습니다. Windows 2000에서이 functionallity를 원했기 때문에 EM_SHOWBALLOONTIP
이 XP에 추가되었습니다. 툴팁은 IE 5.5 이상이 설치되어있는 한 2000 년 풍선으로 표시 될 수 있습니다 (모든 Win2K 클라이언트가 IE 6을 사용하고 있음). 내가 호버에 기본값 을 억제 할 때까지 비활성 상태로 유지하는 것입니다..