private bool PlaceChar( MaskedTextProvider provider, char ch, int startPosition, int length, bool overwrite, out int caretPosition )
{
if( this.ShouldQueryAutoCompleteMask( provider.Clone() as MaskedTextProvider, ch, startPosition ) )
{
AutoCompletingMaskEventArgs e = new AutoCompletingMaskEventArgs(
m_maskedTextProvider.Clone() as MaskedTextProvider,
startPosition,
length,
ch.ToString() );
this.OnAutoCompletingMask( e );
if( ( !e.Cancel ) && ( e.AutoCompleteStartPosition > -1 ) )
{
caretPosition = startPosition;
// AutoComplete the block.
for( int i = 0; i < e.AutoCompleteText.Length; i++ )
{
if( !this.PlaceCharCore( provider, e.AutoCompleteText[ i ], e.AutoCompleteStartPosition + i, 0, true, out caretPosition ) )
return false;
}
caretPosition = e.AutoCompleteStartPosition + e.AutoCompleteText.Length;
return true;
}
}
return this.PlaceCharCore( provider, ch, startPosition, length, overwrite, out caretPosition );
}