ব্যবহার করে Microsoft Winform controls
, আপনার সমস্যাটি সঠিকভাবে সমাধান করা সামান্য কাজ ব্যতীত যা আমি নীচে ব্যাখ্যা করব তা অসম্ভব।
সমস্যা
সহজভাবে "\t"
বা ব্যবহারের ক্ষেত্রে সমস্যাটি vbTab
হ'ল যখন একাধিক টেক্সটবক্স প্রদর্শিত হয় এবং সমস্ত পাঠ্যবক্সের জন্য প্রান্তিককরণ অবশ্যই সম্মান করা উচিত, কেবলমাত্র "\t"
বা vbTab
সমাধানটি এমন কিছু প্রদর্শন করবে যা সর্বদা সঠিকভাবে সংযুক্ত থাকে না।
ভিবি.নেটে উদাহরণ:
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()
নীচের চিত্রের মতো নির্দিষ্ট ব্যবহারকারী 32.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
টেক্সটবক্সের সম্পত্তি অবশ্যই সেট করতে হবে । যদি এই বৈশিষ্ট্যগুলি মিথ্যাতে সেট করা থাকে তবে ট্যাবটি পূর্বের মতো অবস্থিত।
AcceptsTab
সম্পত্তি কীভাবে বরাদ্দ করা হয় তা গুরুত্বপূর্ণ নয় (আমি পরীক্ষা করেছি)।
এই প্রশ্নটি ইতিমধ্যে স্ট্যাকওভারফ্লোতে চিকিত্সা করা হয়েছে
সাবধানতা: ট্যাব পজিশনের জন্য মেসার ইউনিট চরিত্র নয় তবে এমন একটি কিছু যা চরিত্রের 1/4 বলে মনে হয়। এজন্য আমি দৈর্ঘ্যটি 4 দ্বারা গুণ করি।
সি # সমাধান
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);
}
}
}