【问题标题】:Winforms Custom textbox unable to resizeWinforms自定义文本框无法调整大小
【发布时间】:2014-11-08 23:46:41
【问题描述】:

我创建了一个只允许数字的自定义文本框,但是当我在我的页面上使用控件时,我无法增加它的宽度。我尝试将控件的 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;
    }
}

有人可以帮助我如何启用文本框的大小调整。

【问题讨论】:

  • 另外,如果我没记错的话,“键盘编号”和“键盘编号”之间可能存在差异
  • 不能继承Textbox类,需要继承Usercontrol类。
  • 您是否设置了包含的文本框的锚点以适应用户控件的大小变化?
  • 从 TextBox 派生是正确的解决方案,不知道为什么您坚持不能这样做。如发布的那样,您必须添加一堆代码才能使其再次像文本框一样工作。像 OnResize() 一样调整大小。

标签: c# winforms textbox


【解决方案1】:

您是否将 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)));

如果文本框是唯一的控件,您也可以将停靠样式设置为填充:

textBox1.Dock = System.Windows.Forms.DockStyle.Fill;

然后文本框将自动放大以填充用户控件中的可用空间。

正如您问题的 cmets 中提到的,实现 NumericTextbox 的正确方法是实际继承 TextBox 本身并将您的处理代码放在那里。 TextBox is not a sealed class 所以我看不出有任何理由不直接从那里继承。

【讨论】:

  • 解决方案帮助...谢谢:)
  • 也谢谢你...我对这件事完全陌生...:)
【解决方案2】:

对于自定义控件,将 AutoSize 设置为 false最大高度设置为 20(与 Textbox Height 相同) 对于 文本框,将 Dock 设置为 Fill

【讨论】:

    【解决方案3】:
        textBox1.Dock = DockStyle.Fill;
    

    【讨论】:

      猜你喜欢
      • 2013-09-25
      • 2014-09-23
      • 1970-01-01
      • 2021-06-18
      • 2019-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多