منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
[سؤال] ادخال كلمة السر بطريقة متميزة؟ - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182)
+--- قسم : قسم اسئلة VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=183)
+--- الموضوع : [سؤال] ادخال كلمة السر بطريقة متميزة؟ (/showthread.php?tid=644)

الصفحات: 1 2


ادخال كلمة السر بطريقة متميزة؟ - kafi2030 - 22-10-13

بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته

يوجد للتكست بوكس خاصية اسمها PassWordChar
ان تم وضع * بها

فهذا معناه، ان الادخال سوف يكون عبارة عن نجوم

ولكن ارغب ان اطبق طريقة مغايرة، هي اظنها افضل من الطريقة التقليدية ( ********** ) على النحو التالي

بفرض ان كلمة السر هي 123456

عند كتابة الرقم 1 يجب ان يكون 1 وليس *
عند كتابة الرقم التالي وهو 2 يصبح 1 على شكل نجمة والرقم 2 ظاهر اي هكدا *2
عند كتابة الرقم التالي وهو 3 يصبح الرقم السابق (2) عبارة عن * اي هكدا **3

وهكذا
ودلك كما هو في البرامج الحديثة ، حيت فيها اتاحة مجال متميزة للمستثمر برؤية مايدخل من قيم

ملاحظة
( كل رقم يتم ادخاله ......بعد فاصل زمني معين ) يجب ان يتحول الى *
وذلك حتى نضمن ان اخر رقم من كلمة السر يتحول الى *

ارجو ممن اتضحت له الفكرة، تزويدي بالكود المناسب
والف شكر



RE: ادخال كلمة السر بطريقة متميزة؟ - @@أبورائد@@ - 22-10-13

السلام عليكم ورحمة الله وبركاته


لدي فكرة لكن لا يسعنى تذكر طريقة الكود وهو القيام برسم الرمز داخل الحدث KeyPressبدلالة موضع مؤشر الكتابة بواسطة GetPositionFromCharIndex الخاص بـ TextBox مع تشغيل المؤقت Timer1 الذي بدورة يعمل Refresh لاستعادة الشكل السري للرموز مع إيقاف نفسه


السلام عليكم ورحمة الله وبركاته


RE: ادخال كلمة السر بطريقة متميزة؟ - 3booody - 23-10-13

السلام عليكم ورحمة الله وبركاته

طريقة غير احترافية وغير مكتملة 100% اتمنى نصائحكم بها؟

كود :
Private Sub Wait(ByVal n As Short)
        On Error Resume Next
        Dim S As New Stopwatch
        S.Start()
        Do While S.ElapsedMilliseconds < n
            Application.DoEvents()
        Loop
        S.Stop()
    End Sub
    Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
        On Error Resume Next
        TextBox1.PasswordChar = ""
        TextBox1.Select(TextBox1.TextLength, TextBox1.TextLength)
        TextBox1.Text = TextBox1.Text.Replace(TextBox1.Text.Chars(TextBox1.TextLength - 2), "*")
        Wait(500)
        TextBox1.PasswordChar = "*"
    End Sub
    Dim pass As String = ""
    Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
        On Error Resume Next
        If e.KeyChar.ToString = " " Then
            e.Handled = True
            Exit Sub
        End If
        If e.KeyChar = Chr(8) Then
            If TextBox1.SelectedText = 0 Then
                pass = pass.Substring(0, pass.Length - 1)
            Else
                'مشكلة في حال تحديد نص وازالته
            End If
        Else
            pass &= e.KeyChar.ToString
        End If
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        MsgBox(pass)
    End Sub



RE: ادخال كلمة السر بطريقة متميزة؟ - mohammed moh - 23-10-13

و عليكم السلام و رحمة الله
جرب هذا الكود أولا ضع تاكست بوكس واحد و واحد تايمر و شاك بوكس على الفورم + اترك الأسماء الإفتراضية كما هي
ثم ضع هذا الكود
كود :
Private passKey As String = String.Empty
    Private ignoreKeys As New List(Of Keys) From {Keys.Left, Keys.Up, Keys.PageUp, Keys.Home, Keys.Space}

    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        
        Dim emptyMenu As New ContextMenu
        TextBox1.ContextMenu = emptyMenu
        
        Timer1.Interval = 1000
        Timer1.Stop()
    End Sub

    Private Sub TextBox1_PreviewKeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.PreviewKeyDownEventArgs) Handles TextBox1.PreviewKeyDown
        If e.KeyData = Keys.Tab Then
            e.IsInputKey = True
        End If
    End Sub

    Private Sub TextBox1_MouseUp(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles TextBox1.MouseUp
        TextBox1.SelectionStart = TextBox1.TextLength
    End Sub

    Private Sub TextBox1_KeyDown(sender As Object, e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown
        Timer1.Stop()
        If ignoreKeys.Contains(e.KeyCode) OrElse e.Control OrElse e.KeyData = Keys.Tab Then
            e.SuppressKeyPress = True
            Return
        End If
    End Sub

    Private Sub TextBox1_KeyPress(sender As Object, e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
        e.Handled = True
        If e.KeyChar = ChrW(Keys.Escape) Then
            passKey = String.Empty
        ElseIf e.KeyChar = ChrW(Keys.Back) Then
            If passKey.Length = 1 Then
                passKey = String.Empty
            ElseIf passKey.Length > 1 Then
                passKey = passKey.Substring(0, passKey.Length - 1)
            Else
                Return
            End If
        ElseIf e.KeyChar = ChrW(Keys.Return) Then
            HideAllKeys()
            MessageBox.Show(passKey)
            Return
        Else
            passKey &= e.KeyChar.ToString
        End If

        If passKey.Length = 0 Then
            TextBox1.Text = ""
        ElseIf passKey.Length = 1 Then
            TextBox1.Text = passKey
        Else
            TextBox1.Text = New String("*"c, passKey.Length - 1) & passKey(passKey.Length - 1)
        End If
        TextBox1.SelectionStart = TextBox1.TextLength
        If passKey.Length > 0 Then
            Timer1.Start()
        End If
    End Sub

    Private Sub Timer1_Tick(sender As System.Object, e As System.EventArgs) Handles Timer1.Tick
        Timer1.Stop()
        HideAllKeys()
    End Sub

    Private Sub HideAllKeys()
        TextBox1.Text = New String("*"c, passKey.Length)
        TextBox1.SelectionStart = TextBox1.TextLength
    End Sub


    Private Sub CheckBox1_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox1.CheckedChanged
        If CheckBox1.Checked = True Then
            TextBox1.Text = passKey
        Else
            HideAllKeys()
        End If
    End Sub
بالتوفيق



RE: ادخال كلمة السر بطريقة متميزة؟ - hoob computer - 23-10-13

السلام عليكم و رحمة الله و بركاته,

أخي محمد, جزاك الله خيراً على هذا الكود الرائع و السريع و الخفيف Smile

لقد إستعملته في مشروع صغير أود طرحه في المنتدى عن قريب إن شاء الله, و كان ممتازاً.



تحياتي


RE: ادخال كلمة السر بطريقة متميزة؟ - Sajad - 23-10-13

السلام عليكم

عالسريع مارأيكم بهذا الكود:
PHP كود :
Private Sub TextBox2_TextChanged(sender As System.ObjectAs System.EventArgsHandles TextBox2.TextChanged
        Thread
.Sleep(300)
        
TextBox2.PasswordChar "*"
    
End Sub

    
Private Sub TextBox2_KeyPress(sender As System.ObjectAs System.Windows.Forms.KeyPressEventArgsHandles TextBox2.KeyPress
        TextBox2
.PasswordChar ""

    
End Sub 




RE: ادخال كلمة السر بطريقة متميزة؟ - hoob computer - 23-10-13

كود حلو أخوية سجاد, بس شنو الفرق بينه و بين كود الأخ محمد؟

يعني أيهما أفضل من ناحية الصح و الخطأ و من ناحية السرعة و عدم تحميل معالج الحاسوب أو الذاكرة المؤقتة للحاسوب إلى ثقل؟



تحياتي


RE: ادخال كلمة السر بطريقة متميزة؟ - Sajad - 23-10-13

مثل متشوف عدد الاسطر قليل وتستطيع ان تزيد او تقلل السرعة عن طريق الـThread بزيادة الملي ثانية

لم اجرب كود الاخ محمد لكن عالسريع كتبت هذا الكود اعلاه



RE: ادخال كلمة السر بطريقة متميزة؟ - kafi2030 - 24-10-13

السلام عليكم

بدات بتجريب الكود الاخ sajed

ولكن لم استطع تجربته بسبب ظهور رسالة خطأ


على ما يبدو ان هناك مكتبة يجب استدعاؤها، ولكن لا اعلمها

ارجو الارشاد


RE: ادخال كلمة السر بطريقة متميزة؟ - Sajad - 24-10-13

السلام عليكم

قم بتضمين هذه المكتبة:
PHP كود :
Imports System.Threading