Я искал через интернет, я должен использовать неправильные ключевые слова, потому что ничего не могу найти. Я хочу создать текстовое поле с текстом, начиная с немного далекого слева.
Просто так.
Я искал через интернет, я должен использовать неправильные ключевые слова, потому что ничего не могу найти. Я хочу создать текстовое поле с текстом, начиная с немного далекого слева.
Просто так.
Как вы, скорее всего, обнаружили, Winforms Textboxes не имеют свойства дополнения. Поскольку Панели выставляют свойство Padding, один из методов:
Это должно помочь вам начать. Вы также можете создать настраиваемый элемент управления, который делает то же самое, что упоминалось выше.
Если вы говорили о текстовых блоках в asp.net, просто используйте CSS: input[type="text"] {padding: 3px 10px}
Ну, вы можете TrimLeft, а затем объединить с 5 пробелами. Или вы можете настроить пользовательский UserControl с без полей TextBox как фактический элемент ввода, накладывая другой TextBox, который не имеет tabstop, и сместит фокус на безграничный, когда он сфокусировался.
ОК, вот правильное решение. Прежде всего установите Multiline
вашего элемента управления TextBox на true
.
Требуется использование операторов:
using System.Drawing;
using System.Runtime.InteropServices;
using System.Windows.Forms;
код:
private const int EM_SETRECT = 0xB3;
[DllImport(@"User32.dll", EntryPoint = @"SendMessage", CharSet = CharSet.Auto)]
private static extern int SendMessageRefRect(IntPtr hWnd, uint msg, int wParam, ref RECT rect);
[StructLayout(LayoutKind.Sequential)]
private struct RECT
{
public readonly int Left;
public readonly int Top;
public readonly int Right;
public readonly int Bottom;
private RECT(int left, int top, int right, int bottom)
{
Left = left;
Top = top;
Right = right;
Bottom = bottom;
}
public RECT(Rectangle r) : this(r.Left, r.Top, r.Right, r.Bottom)
{
}
}
public void SetPadding(TextBox textBox, Padding padding)
{
var rect = new Rectangle(padding.Left, padding.Top, textBox.ClientSize.Width - padding.Left - padding.Right, textBox.ClientSize.Height - padding.Top - padding.Bottom);
RECT rc = new RECT(rect );
SendMessageRefRect(Handle, EM_SETRECT, 0, ref rc);
}
Теперь вызовите так:
SetPadding(myTextBox, new Padding(5, 5, 5, 5));
Конечно, лучше всего создать свой собственный элемент управления TextBox, который может автоматически установить Multiline
в true и остановить нежелательные строки в тексте и т.д.
Этот вопрос уже порекомендовал ответ. Во всяком случае, я хотел бы поставить альтернативный ответ. Чтобы добавить дополнение к текстовому полю в С#, вы можете использовать метод padLeft. Надеюсь, что это поможет кому-то.
textBox1.Text = "Hello";
textBox1.Text = textBox1.Text.PadLeft(textBox1.Text.Length + 5);
or
textBox1.Text = textBox1.Text.PadLeft(textBox1.Text.Length + 5, '*');
Я знаю, что это немного устарело. Но вот решение. Для исходного текста добавьте пробел в начале. Затем вы можете переопределить событие OnKeyPress
и добавить следующий код, чтобы вы не могли отступать.
protected override void OnKeyPress (KeyPressEventArgs e) {
base.OnKeyPress (e);
if (e.KeyChar == (char)Keys.Back && Text.Length == 1) e.Handled = true;
else e.Handled = true;
}
Вы можете заменить 1 номером пробела на пэд.