نمایش نتایج 1 تا 11 از 11

نام تاپیک: textbox

  1. #1

    textbox

    من یک textbox دارم که طول 10 دارد و در کاراکتر 5 ام textbox کاراکتر '/' را تایپ کرده ام .
    حالا می خوام زمانی که برنامه اجرا می شود خاصیت readonly تکست باکس false باشد اما کاربر نتواند کاراکتر 5 1م تکست باکس را حذف کند یا تغییر دهد . راه حل این مسئله چیه ؟
    با تشکر

  2. #2
    کاربر دائمی آواتار miimii
    تاریخ عضویت
    شهریور 1384
    محل زندگی
    ايران/ تهران
    پست
    128
    فکر کنم از این طریق بتوانید مشکلتان را حل کنید.
    به جای textbox از کنترل maskededitbox استفاده کنید.
    این کنترل را باید ااز toolbox اضافه کنید.
    پس از اضافه کردن این کنترل در proprties خاصیت maxlenght را با عدد 10 set کنید.
    و خاصیت mask را به صورت #####/#### set کنید.
    زمانی که برنامه را اجرا می کنید maskededitbox به این صورت نمایش داده می شود:
    -----/---- و کاربر نمی تواند کاراکتر / را حذف کند و فقط در قسمتهای خالی می تواند چیزی وارد نماید.

    موفق باشید

  3. #3
    ممنون
    حالا من اگه بخوام range برای اعدادم در maskededitbox تعریف کنم فکر می کنی باید یک کنترل خودم بنویسم ؟

  4. #4
    کاربر دائمی آواتار miimii
    تاریخ عضویت
    شهریور 1384
    محل زندگی
    ايران/ تهران
    پست
    128
    منظورتان از range برای اعداد چیه؟ واضح تر توضیح دهید.یعنی فقط یک سری از ارقام خاص را وارد کنید؟

  5. #5
    بله
    مثلا من خاصیت mask را به صورت زیر مقدار دهی کردم : ####/##/## حالا می خوام 4 عدد سمت چپ مثلا range داشته باشد : از 1360 تا 1400

  6. #6
    کاربر دائمی آواتار miimii
    تاریخ عضویت
    شهریور 1384
    محل زندگی
    ايران/ تهران
    پست
    128
    برای محدود کردن range اعداد وارد شده باید خودتان دستی کنترل کنید.مثلا می توانید در event leave کنترل maskededitbox این کنترل را انجام دهید و برای این کار هم می توانید از تابع mid استفاده کنید.

    اولین پارامتر این تابع رشته موردنظرتان و دومی نقطه شروع و سومی طول مورد نظر از آن رشته است.
    کد را در قسمت ذیل می توانید مشاهده کنید.

    Private Sub MaskedEditBox1_Leave(ByVal sender As Object, ByVal e As System.EventArgs)
    Handles MaskedEditBox1.Leave

    If Mid(MaskedEditBox1.Text, 1, 4) > 1400 Or Mid(MaskedEditBox1.Text, 1, 4) <1360 Then
    ("msgbox("error
    End If

    End Sub
    در صورت وجود سوال و یا ابهامی اطلاع دهید.

    موفق باشید

  7. #7
    خوب من می خوام maskededitbox رو customized کنم و در واقع یک usercontrol ایجاد کنم که مثلا دارای خاصیت range باشه

  8. #8
    دوست عزیز توی دات نت برای تعیین کردن Range یک کامپوننت در قسمت Validation به نام Range Validator وجود داره، شما این کامپوننت رو بذار توی فرمت بعد توی Propertyهاش در قسمت ControlToValidate کنترلی که می خوای محدود باشه رو مشخص کن و در قسمت MaxValue و MinValue حداکثر و حداقل عددی رو که می خوای بشه وارد کرد رو وارد کن، در قسمت ErrorMessage متنی که می خوای موقع خطا نمایش داده بشه رو تعیین کن
    توی Propertyهای خود کنترل هم قسمت CauseValidation رو True کن و اگر می خوای Validation به چند کنترل همزمان اعمال بشه در قسمت ValidationGroup کنترلها و Validator یک عدد واحد مثلا 1 رو وارد کن.
    در ضمن بد نیست که تابعی که میخوای عملیات رو انجام بده رو توی یک IF با شرط IF (IsValidate) قرار بده

  9. #9
    نقل قول نوشته شده توسط Wish Master مشاهده تاپیک
    دوست عزیز توی دات نت برای تعیین کردن Range یک کامپوننت در قسمت Validation به نام Range Validator وجود داره، شما این کامپوننت رو بذار توی فرمت بعد توی Propertyهاش در قسمت ControlToValidate کنترلی که می خوای محدود باشه رو مشخص کن و در قسمت MaxValue و MinValue حداکثر و حداقل عددی رو که می خوای بشه وارد کرد رو وارد کن، در قسمت ErrorMessage متنی که می خوای موقع خطا نمایش داده بشه رو تعیین کن
    توی Propertyهای خود کنترل هم قسمت CauseValidation رو True کن و اگر می خوای Validation به چند کنترل همزمان اعمال بشه در قسمت ValidationGroup کنترلها و Validator یک عدد واحد مثلا 1 رو وارد کن.
    در ضمن بد نیست که تابعی که میخوای عملیات رو انجام بده رو توی یک IF با شرط IF (IsValidate) قرار بده
    اینجا بحث winform هستش نه webform !

    در winform باید خاصیت CauseValidation کنترل مورد نظر رو true کنید بعد هرموقع خواستید Validate بشه متد Me.Validate رو فراخوانی کنید ، و در رویداد Validating هر کنترل شرایط مورد نظر رو چک کنید ،
    برای نشون دادن آیکون اخطار کنار کنترل مورد نظر هم از این لینکhttp://msdn2.microsoft.com/en-us/library/f6xht7x2.aspx کمک بگیرید.

    البته اگر کنترلی به منبع داده متصل باشه اتوماتیک (بعد از فراخوانی متد Me.Validate) مقدار وارد شده با نوع داده منبع بررسی میشه .

    البته کامپوننت ها اماده برای validation در winforms هم وجود داره.

  10. #10
    مرسی
    اما آیا من می تونم این عملیات رو به یک کنترل تبدیل کنم ؟ مثلا به maskededitbox یک property اضافه کنم که عملیات validating رو set میکنه؟

  11. #11
    بله...
    کافیه یک کلاس جدید که از maskededitbox ارث ببره یا یک یوزر کنترل جدید که maskededitbox رو توسعه بده بعد قابلیت های ویژه مورد نظرتون رو در اون تعریف کنید و در هر پروژه ای خواستید از این کنترل جدید استفاده کنید.

    http://www.codeproject.com/vb/net/validtext3.asp

    این هم یک مثال ساده :

    Public Class myMaskedEditBox
    Inherits MaskedTextBox
    Dim mValidate As Boolean
    Dim mEP As ErrorProvider
    Public Sub New()
    mValidate = False
    mEP = New ErrorProvider()
    End Sub
    Protected Overrides Sub OnValidating(ByVal e As System.ComponentModel.CancelEventArgs)
    If mValidate Then
    If Not IsNumeric(Me.Text) Then
    mEP.SetError(Me, "Not a numeric value.")
    Else
    mEP.SetError(Me, "")
    End If
    Else
    MyBase.OnValidating(e)
    End If
    End Sub
    PublicProperty Validate() As Boolean
    Get
    Return mValidate
    End Get
    Set(ByVal value As Boolean)
    mValidate = value
    End Set
    End Property


    این روش رو برای هر کنترلی می تونید به کار ببرید ولی کنترل maskededitbox خاصیتی به نام ValidatingType داره که برای کنترل مقدار ها بکار میره- مثلا میتونید یک Type جدید تعریف کنید که محدوده عددیش مشخص باشه و... این مثال MSDN رو ببینید :
    فایل های ضمیمه فایل های ضمیمه
    • نوع فایل: rar VB.rar‏ (20.1 کیلوبایت, 13 دیدار)

تاپیک های مشابه

  1. تعداد کاراکترهای TextBox
    نوشته شده توسط مجتبی جوادی در بخش مباحث عمومی دلفی و پاسکال
    پاسخ: 5
    آخرین پست: یک شنبه 09 اردیبهشت 1386, 12:46 عصر
  2. رابطه بین textbox و فرامین SQL
    نوشته شده توسط masoudcarpet در بخش برنامه نویسی در 6 VB
    پاسخ: 4
    آخرین پست: جمعه 07 اردیبهشت 1386, 18:01 عصر
  3. چگونه محتویات یک textbox html را در textbox asp.net قرار داد
    نوشته شده توسط j-mehdi در بخش طراحی وب (Web Design)
    پاسخ: 13
    آخرین پست: دوشنبه 30 خرداد 1384, 21:44 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •