Winforms自定义文本框无法调整大小
本文关键字:调整 自定义 文本 Winforms | 更新日期: 2023-09-27 18:22:04
我创建了一个只允许数字的自定义文本框,但当我在页面上使用控件时,我无法增加其宽度。我试图将控件的autosize属性设置为TRUE,但没有成功。
下面提到了自定义文本框的代码
public partial class NumericalTextBox : UserControl
{
public NumericalTextBox()
{
InitializeComponent();
textBox1.KeyPress += NumericalTextBox_KeyPress;
}
private void NumericalTextBox_KeyPress(object sender, KeyPressEventArgs e)
{
if ((int)(e.KeyChar) == 22)
{
IDataObject clipData = Clipboard.GetDataObject();
string dataSet = (string)clipData.GetData(DataFormats.Text);
foreach (char data in dataSet)
{
if (!(char.IsNumber(data)) && !(char.IsControl(data)))
{
e.Handled = true;
return;
}
}
return;
}
else
{
if (((char.IsNumber(e.KeyChar))) || ((char.IsControl(e.KeyChar))))
{
return;
}
}
e.Handled = true;
}
}
有人能帮助我如何调整文本框的大小吗。
您是否将textbox1设置为使用用户控件的大小进行锚定?如果不是,则只调整NumericalTextBox的大小,而不调整用户控件中包含的实际文本框的大小。
textBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
如果文本框是唯一的控件,您也可以将dockstyle设置为填充:
textBox1.Dock = System.Windows.Forms.DockStyle.Fill;
然后,文本框将自动放大以填充用户控件中的可用空间。
正如您在问题评论中所提到的,实现NumericTextbox的正确方法是实际继承TextBox
本身,并将处理代码放在其中。TextBox不是一个密封类,所以我看不出有任何理由不直接从那里继承。
textBox1.Dock = DockStyle.Fill;
对于自定义控件,将AutoSize设置为false,将最大高度设置为20(与Textbox height相同)对于文本框,将Dock设置为Fill