का उपयोग करना Microsoft Winform controls
, आपकी समस्या को हल करने के लिए थोड़ा सा वर्कअराउंड के बिना हल करना असंभव है जो मैं नीचे बताऊंगा।
संकट
बस का उपयोग करने में समस्या "\t"
या vbTab
कि जब एक से अधिक पाठ बॉक्स प्रदर्शित होता है और कर रहे हैं कि संरेखण सभी पाठ बॉक्स, केवल के लिए सम्मान किया जाना चाहिए है "\t"
याvbTab
समाधान कुछ है कि नहीं है हमेशा सही ढंग से गठबंधन को प्रदर्शित करेगा।
VB.Net में उदाहरण:
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
TextBox1.Text = "Bernard" + vbTab + "32"
TextBox2.Text = "Luc" + vbTab + "47"
TextBox3.Text = "François-Victor" + vbTab + "12"
End Sub
प्रदर्शित करेगा
जैसा कि आप देख सकते हैं, age
मान François-Victor
को दाईं ओर स्थानांतरित किया गया है और इसके साथ संरेखित नहीं किया गया हैage
दो अन्य टेक्स्टबॉक्स के मूल्य के ।
उपाय
इस समस्या को हल करने के लिए, आपको एक विशिष्ट SendMessage()
user32.dll एपीआई फ़ंक्शन का उपयोग करके टैब की स्थिति निर्धारित करनी चाहिए जैसा कि नीचे दिखाया गया है।
Public Class Form1
Public Declare Function SendMessage _
Lib "user32" Alias "SendMessageA" _
( ByVal hWnd As IntPtr _
, ByVal wMsg As Integer _
, ByVal wParam As Integer _
, ByVal lParam() As Integer _
) As Integer
Private Const EM_SETTABSTOPS As Integer = &HCB
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim tabs() As Integer = {4 * 25}
TextBox1.Text = "Bernard" + vbTab + "32"
SendMessage(TextBox1.Handle, EM_SETTABSTOPS, 1, tabs)
TextBox2.Text = "Luc" + vbTab + "47"
SendMessage(TextBox2.Handle, EM_SETTABSTOPS, 1, tabs)
TextBox3.Text = "François-Victor" + vbTab + "12"
SendMessage(TextBox3.Handle, EM_SETTABSTOPS, 1, tabs)
End Sub
End Class
और निम्नलिखित प्रपत्र प्रदर्शित किया जाएगा
आप देख सकते हैं कि अब, सभी मान सही ढंग से संरेखित हैं :-)
टिप्पणियों
Multiline
TextBox की संपत्ति True पर सेट होनी चाहिए । यदि यह गुण गलत पर सेट है, तो टैब पहले की तरह स्थित है।
AcceptsTab
संपत्ति कैसे दी जाती है यह महत्वपूर्ण नहीं है (मैंने परीक्षण किया है)।
इस सवाल का स्टैकऑवरफ्लो पर पहले ही इलाज किया जा चुका है
सावधानी: टैब स्थिति के लिए मेसुर यूनिट चरित्र नहीं है, लेकिन ऐसा कुछ है जो चरित्र का 1/4 प्रतीत होता है। यही कारण है कि मैं लंबाई 4 से गुणा करता हूं।
C # समाधान
using System;
using System.Windows.Forms;
using System.Runtime.InteropServices;
namespace WindowsFormsApp1
{
public partial class Form1 : Form
{
[DllImport("User32.dll", CharSet = CharSet.Auto)]
private static extern IntPtr SendMessage(IntPtr h, int msg, int wParam, uint[] lParam);
private const int EM_SETTABSTOPS = 0x00CB;
private const char vbTab = '\t';
public Form1()
{
InitializeComponent();
var tabs = new uint[] { 25 * 4 };
textBox1.Text = "Bernard" + vbTab + "32";
SendMessage(textBox1.Handle, EM_SETTABSTOPS, 1, tabs);
textBox2.Text = "Luc" + vbTab + "47";
SendMessage(textBox2.Handle, EM_SETTABSTOPS, 1, tabs);
textBox3.Text = "François-Victor" + vbTab + "12";
SendMessage(textBox3.Handle, EM_SETTABSTOPS, 1, tabs);
}
}
}