मैंने इंटरनेट से खोज की है, मुझे गलत कीवर्ड का उपयोग करना होगा क्योंकि मुझे कुछ भी नहीं मिला है। मैं एक टेक्स्टबॉक्स बनाना चाहता हूं जिसमें बाईं ओर से थोड़ा दूर से टेक्स्ट शुरू हो।टेक्स्टबॉक्स पैडिंग
बस ऐसे ही।
मैंने इंटरनेट से खोज की है, मुझे गलत कीवर्ड का उपयोग करना होगा क्योंकि मुझे कुछ भी नहीं मिला है। मैं एक टेक्स्टबॉक्स बनाना चाहता हूं जिसमें बाईं ओर से थोड़ा दूर से टेक्स्ट शुरू हो।टेक्स्टबॉक्स पैडिंग
बस ऐसे ही।
जैसा कि आपने सबसे अधिक संभावना खोज की है, Winforms Textboxes में पैडिंग प्रॉपर्टी नहीं है। चूंकि पैनलों एक पैडिंग संपत्ति का खुलासा करते हैं, एक तकनीक होगा:
यह आपको प्रारंभ करना चाहिए। आप एक कस्टम नियंत्रण भी बना सकते हैं जो ऊपर वर्णित वही काम करता है।
input[type="text"] {padding: 3px 10px}
केवल समस्या यह है कि कई नई विंडोज स्किन्स के लिए, टेक्स्टबॉक्स पर फिक्स्ड 3 डी एक पैनल के मुकाबले अलग दिखता है। – KeithS
टेक्स्ट पैनल में केंद्रित एक क्लिक ईवेंट रखने के लिए अपने पैनल को सेट करना एक अच्छा विचार हो सकता है। चूंकि यह नया पैडिंग क्षेत्र टेक्स्टबॉक्स का हिस्सा प्रतीत होता है, इसलिए उपयोगकर्ता इसे बंद कर सकता है अगर वे इसे क्लिक करते हैं और कभी भी टेक्स्टबॉक्स पर फ़ोकस नहीं करते हैं। –
@AdamPlocher asp.net के मामले में :) – Adrian
ठीक है, आप ट्रिमलफ्ट कर सकते हैं, फिर 5 रिक्त स्थान के साथ संयोजित कर सकते हैं। या, आप कस्टम एंट्री तत्व के रूप में एक सीमा रहित टेक्स्टबॉक्स के साथ एक कस्टम UserControl स्थापित कर सकते हैं, एक और टेक्स्टबॉक्स को ओवरले कर रहे हैं जिसमें टैबस्टॉप नहीं है और जब यह केंद्रित है तो सीमाहीन को फोकस कर देगा।
इस सवाल की सिफारिश की है जवाब पहले से ही:
मामले में आप asp.net में बक्सें के बारे में बात कर रहे थे, बस सीएसएस का उपयोग करें। वैसे भी मैं वैकल्पिक जवाब देना चाहता हूं। सी # में टेक्स्टबॉक्स में पैडिंग जोड़ने के लिए, आप "पैडलफ्ट" विधि का उपयोग कर सकते हैं। किसी को यह मदद आशा है।
textBox1.Text = "Hello";
textBox1.Text = textBox1.Text.PadLeft(textBox1.Text.Length + 5);
or
textBox1.Text = textBox1.Text.PadLeft(textBox1.Text.Length + 5, '*');
दुर्भाग्यवश, इसमें कुछ खराब कमीएं हैं। उदाहरण के लिए, कोई बाएं पैडिंग के माध्यम से बैकस्पेस कर सकता है। :( – Christian
मुझे यह समाधान अविश्वसनीय रूप से उपयोगी पाया गया क्योंकि मैं एक पठनीय टेक्स्टबॉक्स का उपयोग कर रहा हूं, इसलिए बैकस्पेसिंग नहीं हो सकता है। –
@ क्रिस्टियन इस मामले में आप प्रत्येक परिवर्तन पर 'पैडलेफ्ट' सेट करने के लिए 'TextChanged() 'का उपयोग कर सकते हैं। इस तरह यह नहीं मिल सका इसके नीचे। – C4u
ठीक है, यहां एक उचित समाधान है। सबसे पहले Multiline
अपने टेक्स्टबॉक्स नियंत्रण के 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));
बेशक
, सबसे अच्छा स्वचालित रूप से अपने स्वयं के पाठ बॉक्स नियंत्रण जो कर सकते हैं बनाने के लिए है Multiline
को सत्य में खोलें और अवांछित लाइनों को टेक्स्ट आदि में बंद करें ..
मुझे पता है कि यह थोड़ा पुराना है। लेकिन यहां एक समाधान है। प्रारंभिक पाठ के लिए, शुरुआत में एक जगह जोड़ें। फिर, आप 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 ..? –
बस सादा जेन विजुअल स्टूडियो। मेरी गलती। – dab
जो सवाल का उत्तर नहीं देता है। क्या यह एक विंडोज फॉर्म प्रोजेक्ट है, एक डब्ल्यूपीएफ प्रोजेक्ट (विंडोज फॉर्म के लिए नया प्रतिस्थापन), या एएसपी.Net वेबसाइट? इनमें से सभी में टेक्स्टबॉक्स हैं जिन्हें विजुअल स्टूडियो के माध्यम से जोड़ा जा सकता है, लेकिन वे सभी अलग-अलग काम करते हैं। –