Browse Source

MaskedTextBox: Fix navigation issues when the control is in read-only mode.

pull/1645/head
Nebuleux_cp 14 years ago
parent
commit
8986e47c1c
  1. 34
      ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/MaskedTextBox/Implementation/MaskedTextBox.cs

34
ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/MaskedTextBox/Implementation/MaskedTextBox.cs

@ -309,8 +309,6 @@ namespace Microsoft.Windows.Controls
protected override void OnPreviewKeyDown( KeyEventArgs e ) protected override void OnPreviewKeyDown( KeyEventArgs e )
{ {
e.Handled |= IsReadOnly;
if( !e.Handled ) if( !e.Handled )
{ {
HandlePreviewKeyDown( e ); HandlePreviewKeyDown( e );
@ -321,8 +319,6 @@ namespace Microsoft.Windows.Controls
protected override void OnPreviewTextInput( TextCompositionEventArgs e ) protected override void OnPreviewTextInput( TextCompositionEventArgs e )
{ {
e.Handled |= IsReadOnly;
if( !e.Handled ) if( !e.Handled )
{ {
HandlePreviewTextInput( e ); HandlePreviewTextInput( e );
@ -473,7 +469,10 @@ namespace Microsoft.Windows.Controls
private void HandlePreviewTextInput( TextCompositionEventArgs e ) private void HandlePreviewTextInput( TextCompositionEventArgs e )
{ {
this.InsertText( e.Text ); if( !IsReadOnly )
{
this.InsertText( e.Text );
}
e.Handled = true; e.Handled = true;
} }
@ -482,21 +481,26 @@ namespace Microsoft.Windows.Controls
{ {
if( e.Key == Key.Delete ) if( e.Key == Key.Delete )
{ {
e.Handled = HandleKeyDownDelete(); e.Handled = IsReadOnly
|| HandleKeyDownDelete();
} }
else if( e.Key == Key.Back ) else if( e.Key == Key.Back )
{ {
e.Handled = HandleKeyDownBack(); e.Handled = IsReadOnly
|| HandleKeyDownBack();
} }
else if( e.Key == Key.Space ) else if( e.Key == Key.Space )
{ {
InsertText( " " ); if( !IsReadOnly )
{
InsertText( " " );
}
e.Handled = true; e.Handled = true;
} }
else if( e.Key == Key.Return || e.Key == Key.Enter ) else if( e.Key == Key.Return || e.Key == Key.Enter )
{ {
if( AcceptsReturn ) if( !IsReadOnly && AcceptsReturn )
{ {
this.InsertText( "\r" ); this.InsertText( "\r" );
} }
@ -514,7 +518,10 @@ namespace Microsoft.Windows.Controls
{ {
if( AcceptsTab ) if( AcceptsTab )
{ {
this.InsertText( "\t" ); if( !IsReadOnly )
{
this.InsertText( "\t" );
}
e.Handled = true; e.Handled = true;
} }
@ -690,16 +697,15 @@ namespace Microsoft.Windows.Controls
if( IsReadOnly ) if( IsReadOnly )
return; return;
MaskedTextProvider provider = MaskProvider;
int position = SelectionStart;
object data = Clipboard.GetData( DataFormats.Text ); object data = Clipboard.GetData( DataFormats.Text );
if( data != null ) if( data != null )
{ {
string text = data.ToString().Trim(); string text = data.ToString().Trim();
if( text.Length > 0 ) if( text.Length > 0 )
{ {
provider.Set( text ); int position = SelectionStart;
MaskProvider.Set( text );
UpdateText( position ); UpdateText( position );
} }

Loading…
Cancel
Save