【问题标题】:Custom textBox in C#C#中的自定义文本框
【发布时间】:2020-06-22 12:50:55
【问题描述】:

谁能帮我创建一个 仅在 C# 中带有底部边框的文本框?我正在使用 WinForms 和 .Net Framework 4.8。这是我要创建的图像。 我需要正确的解决方案。

【问题讨论】:

  • 到目前为止您尝试过什么?这个想法是有一个厚度(0,0,0,borderThickness)。
  • This 可以帮到你
  • 我已经尝试了 3-4 个帖子的答案,但没有一个对我有用。
  • @Mateech textBox 不包含 BorderSides 的定义。
  • 我不想使用任何第三方应用程序或应用程序扩展。

标签: c# winforms textbox


【解决方案1】:

实现这一点的一种方法是将标签停靠在 TextBox 的底部,就像这样

textBox1.BorderStyle = System.Windows.Forms.BorderStyle.None;
var label = new Label()
{
    Height = 1,
    Dock = DockStyle.Bottom,
    BackColor = Color.Black
};
textBox1.Controls.Add(label);

【讨论】:

  • 你能解释一下这行是什么意思吗:public const int WM_NCLBUTTONDOWN = 0xA1;
  • @TusharChaurasia 用于了解是否在控件(或窗体)的非客户区按下鼠标左键。
【解决方案2】:

您通过显示图片提到的这个特定文本框称为Material TextBox,这样的UI称为Material UI。

你可以参考这个链接:

How to use material design controls c# winforms

接受的答案会很好,但是如果您想要更专业的东西,这可能是您的选择。

该链接说明了如何在您的 winforms 应用程序中使用 Nuget 包 MaterialSkin.Updated 来制作漂亮的 UI。

编辑:

如果您不是编码极客,并且需要在没有太多编码部分的情况下完成,您可以使用文本框创建一个简单的用户控件(根据您的需要设计背景颜色和文本颜色)。

然后在底部添加一个大小为 (0,1) 的面板,并将其设置为仅在文本框获得焦点时可见。

此链接提供了向文本框添加占位符的示例:Placeholder StackOverFlow

【讨论】:

  • 是第三方吗?
  • @TusharChaurasia:没错。它是一组专门设计的用于增强 UI 的控件。请查阅我提供的链接。这是一个完整的教程。
  • @D J 我不想使用任何第三方库。
  • @TusharChaurasia:哦。没问题。但一种简单的方法是,您可以创建一个带有文本框和大小为 0,1 的面板的用户控件,它会给出准确的结果。阅读 EDIT: 部分。如果它有效,请不要忘记投票!
  • @TusharChaurasia:是的。添加代码总是比创建用户控件更容易。但是,这可能是次要答案!祝你好运!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-02
  • 2013-06-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多