To reproduce:
1.Add a RadPageView with several pages.
2.Set the ViewElement.AllowEdit property to true.
3.Use the following code:
public Form1()
{
InitializeComponent();
radPageView1.ViewElement.AllowEdit = true;
radPageView1.ViewElement.EditorInitialized += ViewElement_EditorInitialized;
}
private void ViewElement_EditorInitialized(object sender, RadPageViewEditorEventArgs e)
{
radPageView1.ViewElement.ActiveEditor.Validating -= ActiveEditor_Validating;
radPageView1.ViewElement.ActiveEditor.Validating += ActiveEditor_Validating;
radPageView1.ViewElement.ActiveEditor.Validated -= ActiveEditor_Validated;
radPageView1.ViewElement.ActiveEditor.Validated += ActiveEditor_Validated;
radPageView1.ViewElement.ActiveEditor.ValidationError -= ActiveEditor_ValidationError;
radPageView1.ViewElement.ActiveEditor.ValidationError += ActiveEditor_ValidationError;
}
private void ActiveEditor_Validating(object sender, CancelEventArgs e)
{
RadPageViewElement.PageViewItemTextEditor editor =
sender as RadPageViewElement.PageViewItemTextEditor;
if (editor != null && radPageView1.ViewElement.ActiveEditor.Value == string.Empty)
{
e.Cancel = true;
}
}
private void ActiveEditor_ValidationError(object sender, ValidationErrorEventArgs e)
{
RadMessageBox.Show("Page label can't be empty!", "Error", MessageBoxButtons.OK, RadMessageIcon.Error);
}
private void ActiveEditor_Validated(object sender, EventArgs e)
{
RadMessageBox.Show("Page label has been successfully updated!", "Information", MessageBoxButtons.OK, RadMessageIcon.Info);
}
If you change a tab title and do not press Enter, but click outside the pageview, the respective events for validation are not fired.
Workaround:
private void ViewElement_EditorInitialized(object sender, RadPageViewEditorEventArgs e)
{
RadPageViewElement.PageViewItemTextEditor textEditor = e.ActiveEditor as RadPageViewElement.PageViewItemTextEditor;
RadPageViewElement.PageViewItemTextEditorElement element = textEditor.EditorElement as RadPageViewElement.PageViewItemTextEditorElement;
element.PropertyChanged += element_PropertyChanged;
}
private void element_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
RadPageViewElement.PageViewItemTextEditorElement element = sender as RadPageViewElement.PageViewItemTextEditorElement;
if (e.PropertyName == "ContainsFocus"&& !element.ContainsFocus)
{
radPageView1.ViewElement.ActiveEditor.Validate();
}
}