我正在尝试在System.Windows.Forms命名空间中扩展标准TextBox控件。我想要完成的一件事就是修改TextBox顶部和底部的填充(文本和边框之间的间距)。
在左/右侧进行操作非常简单,但我很难在顶部/底部进行任何操作。
以下是我的一些要求(如果可能):
System.Windows.Forms.TextBox
(无UserControls)MultiLine
= false
此代码允许我垂直调整大小,并添加左边距:
public class TextBoxTest : TextBox
{
public TextBoxTest()
{
base.AutoSize = false;
NativeMethods.SendMessage(Handle, NativeMethods.EM_SETMARGINS, NativeMethods.EC_LEFTMARGIN, 20);
base.Height = 55;
base.Width = 150;
base.Text = "This is a test";
}
}
这看起来像是:
我也试过EM_SETRECT
,但它需要一个MultiLine TextBox。
是否可以使用顶部/底部边距(或垂直中心) - 不使用UserControl并保持MultiLine = false?
如果是这样,有人能指出我正确的方向吗?
更新,澄清一下,我想继承TextBox的原因,而不是UserControl或Panel,因此它通过了duck测试(如果它看起来像鸭子,嘎嘎叫鸭子等)。我希望if (myControl is TextBox) ...
评估为true。可能有一种方法可以做到这一点,我对类型转换器做了很多,也许这就是我应该采取的路径。
我希望这是TextBox的真正扩展。换句话说,它可以做几乎所有文本框可以做的事情加上一些,但没有限制,因为它不是“TextBox”类型的事实。看起来有必要以某种方式调整它,它支持左右边距但看起来不是上/下边距。再次感谢
答案 0 :(得分:0)
您无法从代码中更改Windows窗体文本框的填充属性。
相反,您可以将文本框放在容器中,例如面板
删除文本框的边框,确保两者的BackColor
属性相同
将文本框的Dock
属性更改为Fill
然后在面板上应用填充。