Completed
Last Updated: 23 Apr 2014 12:56 by ADMIN
[C#] [Export(typeof(IControlSpellChecker))] class MyTextBoxControlSpellChecker : ControlSpellCheckerBase { #region Constants private static readonly char[] WordPartSeparators = new char[] { '-', '–', '’', '\\', '/', '|', '=', '*', '(', ')' }; #endregion #region Fields private RadTextBoxControl textBox; #endregion #region Constructors public MyTextBoxControlSpellChecker() { } #endregion #region Properties public override Control CurrentControl { get { return this.textBox; } set { this.textBox = (RadTextBoxControl)value; } } #endregion #region Methods public override void ChangeCurrentWord(string suggestion) { int selectionStartPosition = textBox.SelectionStart; int selectionLength = textBox.SelectionLength; StringBuilder textBoxText = new StringBuilder(this.textBox.Text); textBoxText.Remove(selectionStartPosition, selectionLength); textBoxText.Insert(selectionStartPosition, suggestion); textBox.Text = textBoxText.ToString(); } public override IWordInfo MoveToNextError() { foreach (TextBoxWordInfo wordInfo in this.GetListOfWords()) { if (!this.CheckWordIsCorrect(wordInfo.Word)) { this.textBox.SelectionStart = wordInfo.StartPosition; this.textBox.SelectionLength = wordInfo.Word.Length; this.textBox.Focus(); return wordInfo; } } return null; } private IEnumerable<IWordInfo> GetListOfWords() { foreach (var wordItem in this.GetWordsFromText(this.textBox.Text)) { if (wordItem.Word == " " || wordItem.Word == Environment.NewLine || wordItem.Word == "\r" || wordItem.IsUppercase || wordItem.ContainsDigits) { continue; } int partIndex = 0; int startIndex = wordItem.IndexInText; foreach (string word in wordItem.Word.Split(WordPartSeparators, StringSplitOptions.None)) { string trimmedWord = TrimWordEnd(word); startIndex += TrimWordStart(ref trimmedWord); var wordInfo = new TextBoxWordInfo(trimmedWord, startIndex); if (trimmedWord.Length > 1) { yield return wordInfo; } startIndex += word.Length; startIndex++;//+1 for the separator partIndex++; } } } private IEnumerable<WordItem> GetWordsFromText(string text) { bool wordContainsDigits = false; List<WordItem> words = new List<WordItem>(text.Length / 7); StringBuilder currentWord = new StringBuilder(); bool onlyUpperLetters = true; int i = 0; for (i = 0; i < text.Length; i++) { if (text[i] == Environment.NewLine[0]) { if (currentWord.Length > 0) { words.Add(new WordItem(currentWord.ToString(), i - currentWord.Length, wordContainsDigits, onlyUpperLetters)); currentWord.Clear(); } words.Add(new WordItem(Environment.NewLine, i - currentWord.Length, wordContainsDigits, onlyUpperLetters)); if (i + 1 < text.Length && text[i + 1] == Environment.NewLine[1]) { i++; } wordContainsDigits = false; onlyUpperLetters = true; } else if (text[i] != '\'' && (text[i].ToString() == " " || text[i].ToString() == "\t" || Char.IsPunctuation(text[i]))) { if (currentWord.Length > 0) { words.Add(new WordItem(currentWord.ToString(), i - currentWord.Length, wordContainsDigits, onlyUpperLetters)); currentWord.Clear(); } words.Add(new WordItem(text[i].ToString(), i - currentWord.Length, wordContainsDigits, onlyUpperLetters)); wordContainsDigits = false; onlyUpperLetters = true; } else { char nextChar = text[i]; if (nextChar > '0' && nextChar < '9') { wordContainsDigits = true; } onlyUpperLetters = onlyUpperLetters && !char.IsLower(nextChar); currentWord.Append(text[i]); } } if (currentWord.Length > 0) { words.Add(new WordItem(currentWord.ToString(), i - currentWord.Length, wordContainsDigits, onlyUpperLetters)); } return words; } private int TrimWordStart(ref string word) { int index = 0; while (index < word.Length && !char.IsLetter(word[index])) { index++; } if (index == 0) { return index; } if (index < word.Length) { word = word.Substring(index); } else { word = string.Empty; } return index; } private string TrimWordEnd(string word) { int index = word.Length - 1; while (index >= 0 && !char.IsLetter(word[index])) { index--; } if (index >= 0) { return word.Substring(0, index + 1); } return string.Empty; } private bool CheckWordIsCorrect(string word) { //TODO: add built-in dictionary, to allow suggestions for these words if (string.CompareOrdinal(word, "Telerik") == 0 || string.CompareOrdinal(word, "Microsoft") == 0 || string.CompareOrdinal(word, "Silverlight") == 0 || string.CompareOrdinal(word, "RadRichTextBox") == 0 || string.CompareOrdinal(word, "RadControls") == 0) { return true; } if (this.IgnoredWords != null && this.IgnoredWords.ContainsWord(word)) { return true; } return base.SpellChecker.CheckWordIsCorrect(word); } public override RadDocument GetContentAsDocument() { TxtFormatProvider txtFormatProvider = new TxtFormatProvider(); RadDocument document = txtFormatProvider.Import(this.textBox.Text); return document; } public override void SetContentFromDocument(RadDocument document) { TxtFormatProvider txtFormatProvider = new TxtFormatProvider(); this.textBox.Text = txtFormatProvider.Export(document); } #endregion } internal struct WordItem { public string Word; public int IndexInText; public bool ContainsDigits; public bool IsUppercase; public WordItem(string word, int indexInText, bool containsDigits, bool isUppercase) { this.Word = word; this.IndexInText = indexInText; this.ContainsDigits = containsDigits; this.IsUppercase = isUppercase; } }
Completed
Last Updated: 23 Apr 2014 12:56 by ADMIN
When working with RadAutoCompleteBox if one tries to remove a token from the collection through clicking on the close "x" button of the token the TextBoxElement of the text box loses focus, even though it look as if it still contains it.
Completed
Last Updated: 23 Apr 2014 12:56 by ADMIN
To reproduce:
- Use RadTimePicker in a project and apply the Aqua theme to it.
Completed
Last Updated: 23 Apr 2014 12:56 by ADMIN
ADMIN
Created by: Martin Vasilev
Comments: 0
Category: Editors
Type: Bug Report
1
RadColorDialog does not work when assemblies has been merged, because RadColorEditor's CreateColorSelectorInstance method has hardcoded search for Telerik.WinControls.UI.dll assembly.
Completed
Last Updated: 23 Apr 2014 12:56 by ADMIN
ADMIN
Created by: Martin Vasilev
Comments: 0
Category: Editors
Type: Bug Report
2
KeyPress, KeyDown etc. events are not firing.
Completed
Last Updated: 23 Apr 2014 12:56 by ADMIN
ADMIN
Created by: Alexander
Comments: 0
Category: Editors
Type: Feature Request
0
The RadTextBox control should rise the PreviewKeyDown event.
Completed
Last Updated: 22 Apr 2014 16:04 by ADMIN
Expose the AutoCompleteDropDown so it's behavior can be customized and the user can subscribe to its events for example.
Completed
Last Updated: 22 Apr 2014 15:41 by ADMIN
To reproduce:
Add RadAutoCompleteBox
Add AutoCompleteItems
Change the theme to Office2010BlueTheme, Office2010BlackTheme, Office2007SilverTheme or Office2010SilverTheme.
Write something - looks good
Autocomplete a word and now write something - text is a few pixels lower.

Workaround:

void radAutoCompleteBox2_TextBlockFormatting(object sender, TextBlockFormattingEventArgs e)
{
    TokenizedTextBlockElement token = e.TextBlock as TokenizedTextBlockElement;
    if (token != null)
    {
        token.Margin = new Padding(0, 1, 1, 1);             
    }
}
Completed
Last Updated: 26 Mar 2014 11:06 by ADMIN
To reproduce:
1.Add a RadAutoCompleteBox to a form. 
2.Add AutoCompleteItems.
3.Start the project.
4.AutoComplete a word and write some normal text.
5.Change few themes (mainly office themes) you will notice that the text's position shifts down.

Workaround:
Clear each TokenizedTextBlockElement's bottom Margin from the themes using VisualStyleBuilder.
Completed
Last Updated: 18 Mar 2014 10:39 by ADMIN
To reproduce: 
- Set the NullableValue property to null. 
- When you start the application there is no date in datetime picker but when the control loses the focus the date is automatically filled.

Workaround: 
- Set the NullDate to equals the Value: radDateTimePicker1.NullDate = radDateTimePicker1.Value; 
- Then you change the NullDate in the ValueChanged event: 
void radDateTimePicker1_ValueChanged(object sender, EventArgs e) { radDateTimePicker1.NullDate = new DateTime(1980, 1, 1); }
Completed
Last Updated: 27 Feb 2014 09:38 by ADMIN
ADMIN
Created by: Georgi I. Georgiev
Comments: 0
Category: Editors
Type: Bug Report
0
To reproduce: Add a TableLayout and in the cells add a RadtextBox with its multiline property set to true. Resize the form until the textboxes and unclickable and no scrollbars are shown. This behavior does not always occur.

Workaround: Use a custom RadTextBox class: public class MyTextBox : RadTextBox { protected override void InitializeTextElement() { this.GetType().BaseType.GetField("textBoxElement", BindingFlags.Instance | BindingFlags.NonPublic).SetValue(this, new MyTextBoxElement()); this.TextBoxElement.StretchVertically = true; this.TextBoxElement.ShowBorder = true; } } public class MyTextBoxElement : RadTextBoxElement { protected override SizeF MeasureOverride(SizeF availableSize) { availableSize.Width -= BorderThickness.Size.Width; availableSize.Height -= BorderThickness.Size.Height; SizeF desiredSize = this.MeasureChildren(availableSize); return desiredSize; } protected override Type ThemeEffectiveType { get { return typeof(RadTextBoxElement); } } }
Completed
Last Updated: 26 Feb 2014 13:58 by ADMIN
ADMIN
Created by: Georgi
Comments: 0
Category: Editors
Type: Feature Request
1
A nice add-on to the control would be having Get/SetTextField methods, allowing for complete customization of each masked field.
Completed
Last Updated: 20 Feb 2014 15:25 by Adam P
You guys expose most of the properties from the "HostedControl" on your custom controls.  One that seems to be missing, and requires an unintuitive line of code is the "UseSystemPasswordChar" boolean property from the TextBox.  I think it makes a lot of sense to expose this.

See: http://www.telerik.com/forums/usesystempasswordchar-property-for-radtextbox
Completed
Last Updated: 20 Feb 2014 15:17 by ADMIN
ADMIN
Created by: Dess | Tech Support Engineer, Principal
Comments: 0
Category: Editors
Type: Bug Report
1
To reproduce:
- add a RadMaskedEditBox with MaskType = MaskType.Standard
- input some numbers to fill all the expected digits
- select the content in the RadMaskedEditBox and press Enter key. As a result the last number is removed

Workaround:
private void radMaskedEditBox1_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.Handled = e.KeyChar == (char)Keys.Return;
        }
Declined
Last Updated: 20 Feb 2014 14:52 by ADMIN
ADMIN
Created by: Jack
Comments: 0
Category: Editors
Type: Feature Request
3
Currently it is not possible to represent time as 24:00 in time picker control as it uses the .NET DateType type, which does not support "24:00" as valid time.
Completed
Last Updated: 15 Feb 2014 11:03 by ADMIN
ADMIN
Created by: Stefan
Comments: 0
Category: Editors
Type: Bug Report
0
To reproduce:
- add a RadButton and a RadTimePicker;
- on RadButton.Click dispose the existing RadTimePicker and create a new one;
- continue clicking for a while and notice that memory consumption is rising.
Completed
Last Updated: 13 Feb 2014 13:19 by Jesse Dyck
Created by: Svetlin
Comments: 1
Category: Editors
Type: Feature Request
11
Improve the RadTextBoxControl to allow different text alignment as Microsoft TextBox.
Completed
Last Updated: 13 Feb 2014 13:18 by Jesse Dyck
To reproduce:  
            RadTextBox txtAction = new Telerik.WinControls.UI.RadTextBox();
            txtAction.Dock = System.Windows.Forms.DockStyle.Fill;
            this.Controls.Add(txtAction);

Workaround:
void txtAction_Resize(object sender, EventArgs e)
{
            txtAction.TextBoxElement.InvalidateMeasure(true);
            txtAction.TextBoxElement.UpdateLayout();
  }
Completed
Last Updated: 13 Feb 2014 09:31 by ADMIN
ADMIN
Created by: Dobry Zranchev
Comments: 0
Category: Editors
Type: Bug Report
0
RadDateTimePicker memory leak, when calendar popup is opened more than once.