我正在创建一个自定义控件,一个自定义外观TextBox,只允许数字输入。它由一个普通控件组成,TextBox作为其中一个属性:
class NumericControl : Control
{
private TextBox text;
//rest of the code
}
此TextBox是在控件内部绘制的。这一切都非常好用,除了当你按下输入它会产生这种可怕的DING噪音。为了解决这个问题,我想我已经制作了TextBox多线。但是,当我这样做时,因为TextBox的字体大小被更改为调整它的大小,TextBox内的闪烁光标似乎消失了,这是一个问题,因为那时你不能通过查看是否告诉它是否它有重点。如果我不改变TextBox的字体大小,光标会出现并正常运行,但是我需要根据控件的高度更改字体大小,否则它看起来没什么好处。 / p>
设置TextBox属性的代码如下,并且位于我的控件的构造函数中:
text = new TextBox();
text.AutoSize = false;
text.Left = 10;
text.Top = 2;
text.Text = "0";
text.Multiline = true;
text.BorderStyle = BorderStyle.None;
text.TextChanged += text_TextChanged;
text.LostFocus += text_LostFocus;
this.Controls.Add(text);
在OnPaint事件中更改了字体大小,如下所示:
text.BackColor = Enabled ? Background : SystemColors.Control; //Fixes an issue I had with disabled TextBox BackColor being able to be changed
text.Font = new Font(TextBox.DefaultFont.FontFamily, (float)(rc.Height * 0.7 - 2), FontStyle.Regular);
text.Width = this.Width - 21;
text.Height = this.Height - 4;
如何同时调整文本框(和字体大小)的大小,并使其成为多行,同时在焦点处保留闪烁的光标?