인터넷을 통해 검색 한 결과 아무 것도 찾을 수 없기 때문에 잘못된 키워드를 사용해야합니다. 왼쪽에서 조금 떨어진 곳에 텍스트가있는 텍스트 상자를 만들고 싶습니다. 그냥 그렇게텍스트 상자 패딩
.
인터넷을 통해 검색 한 결과 아무 것도 찾을 수 없기 때문에 잘못된 키워드를 사용해야합니다. 왼쪽에서 조금 떨어진 곳에 텍스트가있는 텍스트 상자를 만들고 싶습니다. 그냥 그렇게텍스트 상자 패딩
.
WinForms 텍스트 상자에는 패딩 속성이 없을 가능성이 가장 높습니다.
시작해야합니다. 위에서 언급 한 것과 동일한 작업을 수행하는 사용자 지정 컨트롤을 만들 수도 있습니다. 이미
input[type="text"] {padding: 3px 10px}
자, TrimLeft, 5 공백으로 연결할 수 있습니다. 또는 경계선없는 TextBox를 실제 입력 요소로 사용하여 사용자 지정 UserControl을 설정하고 탭이없는 다른 TextBox를 겹치게하고 초점이 맞춰지면 테두리없는 테두리로 포커스를 이동합니다.
이 질문에 추천 답변 :
경우 당신은 asp.net에서 텍스트 상자에 대해 얘기했다, 단지 CSS를 사용합니다. 어쨌든 나는 대체 답변을하고 싶습니다. C#에서 텍스트 상자에 패딩을 추가하려면 "padLeft"메서드를 사용할 수 있습니다. 누군가에게이 도움이되기를 바랍니다.
textBox1.Text = "Hello";
textBox1.Text = textBox1.Text.PadLeft(textBox1.Text.Length + 5);
or
textBox1.Text = textBox1.Text.PadLeft(textBox1.Text.Length + 5, '*');
정상적인 해결책은 다음과 같습니다. 무엇보다 먼저 TextBox 컨트롤의 Multiline
을 true
으로 설정하십시오.
필요한 using 문 :
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로 설정하고 텍스트 등에서 원하지 않는 줄 바꿈을 중지하십시오.
나는 이것이 약간 오래된 것을 알고있다. 그러나 여기에 해결책이 있습니다. 초기 텍스트의 경우 처음에 공백을 추가하십시오. 그런 다음 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로 대체 할 수 있습니다.
winforms, webforms, wpf ..? –
그냥 일반 Jane Visual Studio. 내 잘못이야. – dab
그 질문에 대답하지 않습니다. Windows Forms 프로젝트, WPF 프로젝트 (Windows Forms의 새로운 대체품) 또는 ASP.Net 웹 사이트입니까? 이들 모두에는 Visual Studio를 통해 추가 할 수있는 텍스트 상자가 있지만 모두 다르게 작동합니다. –