دسته بندی ها
02:03 1398/12/25
جدا کردن سه رقم سه رقم اعداد در TextBox در WPF
سلام می خوام اعدادی که توی TextBox وارد می کنم سه رقم سه رقم جداسازی بشه تا خوندن عدد کار ساده تری باشه. پروژه با سی شارپ و Wpf هست.
ممنون می شم راهنمایی کنید
مشخصات سوال کننده :
کاربر : pedram_khan
امتیاز کاربر : 277
رتبه کاربر : 6
به این سوال امتیاز بدهید
0
تعداد بازدید این سوال : 4623
هوش مصنوعی
پاسخ هوش مصنوعی
برای جداسازی اعداد سه رقم سه رقم در یک TextBox در WPF، می توانید از یک رفتار (Behavior) استفاده کنید تا تغییرات در TextBox را مدیریت کنید. در اینجا یک مثال برای این کار ارایه می شود:
using System.Globalization;
using System.Text.RegularExpressions;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
namespace YourNamespace
{
public class StringFormatBehavior
{
public static readonly DependencyProperty FormattedTextProperty =
DependencyProperty.RegisterAttached("FormattedText", typeof(string), typeof(StringFormatBehavior), new PropertyMetadata(string.Empty, OnFormattedTextChanged));
public static string GetFormattedText(DependencyObject obj)
{
return (string)obj.GetValue(FormattedTextProperty);
}
public static void SetFormattedText(DependencyObject obj, string value)
{
obj.SetValue(FormattedTextProperty, value);
}
private static void OnFormattedTextChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
if (d is TextBox textBox)
{
textBox.TextChanged -= TextBox_TextChanged;
textBox.Text = FormatNumber(textBox.Text);
textBox.TextChanged += TextBox_TextChanged;
}
}
private static void TextBox_TextChanged(object sender, TextChangedEventArgs e)
{
if (sender is TextBox textBox)
{
textBox.TextChanged -= TextBox_TextChanged;
string formattedText = FormatNumber(textBox.Text);
textBox.Text = formattedText;
textBox.CaretIndex = formattedText.Length; // Move caret to end
textBox.TextChanged += TextBox_TextChanged;
}
}
private static string FormatNumber(string input)
{
if (string.IsNullOrEmpty(input))
return input;
string digitsOnly = Regex.Replace(input, @"[^\d]", string.Empty);
return string.Format(CultureInfo.InvariantCulture, "{0:N0}", long.Parse(digitsOnly));
}
}
}
سپس می توانید از این Behavior در XAML استفاده کنید:
<TextBox Width="200" Height="30" local:StringFormatBehavior.FormattedText="{Binding YourNumberProperty}" />
این کد به کاربران اجازه می دهد تا اعداد را در TextBox وارد کنند و به صورت خودکار سه رقم سه رقم جدا شوند. توجه داشته باشید که باید namespace مربوط به behavior را در XAML اضافه کنید.
پاسخ دهنده : Sowgandi
11:49 1399/01/10
با سلام و خسته نباشید.
ابتدا خاصیت MaxLength تکست باکس رو عدد 20 قرار بدید و در رویداد TextChanged تکست باکس خود کد زیر رو وارد کنید.
try
{
if (MyTextBox.Text != string.Empty)
{
MyTextBox.Text = string.Format("{0:N0}", double.Parse(MyTextBox.Text.Replace(",", "")));
MyTextBox.Select(MyTextBox.MaxLength, 0);
}
}
catch ()
{
return;
}
آخرین سوالات ثبت شده
- آموزش استفاده از پلاگین گردونه شانس در Asp.net core به همراه سورس
- نمایش متن به صورت فرمت شده در CkEditor
- آموزش استفاده از SignalR در Asp.net Core با مثال عملی
- ادغام چند گزارش استیمول سافت بصورت پی دی اف در یک فایل
- نحوه تغییر استایل کامپوننت select2 چگونه است ؟
- چگونه امنیت پروژه را در Asp.net Core افزایش دهیم ؟
- ارسال پارامتر در دستور window.open جی کویری
- ارسال پارامتر از طریق جاوااسکریپت با کلیک روی تگ a
- خطای 500 زمان اجرا شدن پروژه روی هاست
- کویری نویسی در استیمول سافت جهت فیلتر اطلاعات
سوالات مرتبط
- مشکل تاریخ شمسی در سی شارپ
- نمایش گزارش stimulsoft روی کلاینت
- تفاوت های سی شارپ 8 با نسخه های قبلی چیه؟
- انتخاب چند سطر دلخواه توسط چک باکس در DataGrid و محاسبه جمع سطرهای انتخاب شده
- نمایش نوتیفکیشن در سی شارپ
- ارسال پارامتر از سی شارپ به استیمول سافت
- عدم نمایش عکس در دیتاگرید ویو در wpf
- Library Animation برای کنترلهای WPF
- مشکل در تغییر مقدار Text کنترل RibbonBar در کامپوننت DevExpress
- قرار دادن مقادیر ارسالی یک ستون از جدول به صورت سطری در استیمول
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.
 
ورود