منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : عمل حاسبة بسيطة
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم ورحمة الله وبركاتة


لدي سؤال عن انشاء حاسبة بسيطة تقريبا انا قمت بكل شيء

بس عندي مشكلة وهيا منع المستخدم من كتابة عمليات متتالية مثلا

122++33--+55

يعني منع كتابة علامات جمع او طرح او ضرب او قسمة متتالية او مختلفة جعل التيكست تقبل علامة واحدة فقط

وايضا لا تقبل علامات اول العملية الحسابية بالتيكست.

-+5+5
بصراحة لا ادري كيفية  وضعية الازرار عندك لكن شوف الكود التالي هل يناسبك ام لا
PHP كود :
Private Function GetOp() As Boolean
        If TextBox1
.Text.Contains("+"Then Return True Else Return False
        If TextBox1
.Text.Contains("-"Then Return True Else Return False
        If TextBox1
.Text.Contains("*"Then Return True Else Return False
        If TextBox1
.Text.Contains(""Then Return True Else Return False
    End 
Function
 
   Private Sub Button1_Click(sender As System.ObjectAs System.EventArgsHandles Button1.ClickButton2.ClickButton3.ClickButton4.Click
        If GetOp
() = True Then Exit Sub
        TextBox1
.AppendText(sender.text)
 
   End Sub 

هل تقصد انه يتم ادخال الارقام من لوحة المفاتيح(الكيبورد)؟
(12-04-20, 05:52 PM)سعود كتب : [ -> ]بصراحة لا ادري كيفية  وضعية الازرار عندك لكن شوف الكود التالي هل يناسبك ام لا
PHP كود :
Private Function GetOp() As Boolean
        If TextBox1
.Text.Contains("+"Then Return True Else Return False
        If TextBox1
.Text.Contains("-"Then Return True Else Return False
        If TextBox1
.Text.Contains("*"Then Return True Else Return False
        If TextBox1
.Text.Contains(""Then Return True Else Return False
    End 
Function
 
   Private Sub Button1_Click(sender As System.ObjectAs System.EventArgsHandles Button1.ClickButton2.ClickButton3.ClickButton4.Click
        If GetOp
() = True Then Exit Sub
        TextBox1
.AppendText(sender.text)
 
   End Sub 

هل تقصد انه يتم ادخال الارقام من لوحة المفاتيح(الكيبورد)؟

الحدث ملوش علاقة بالازرار المفروض يكون موجود بحدث TextChanged

انا فهمت الكود بيتم ازاي

بس العمليات بتم بالكيبورد او الازرار عشان كدة عايز العملية تكون داخل التيكست الي بتظهر فيها العمليات بحدث TextChanged

عشان لو المستخدم استخدم البوتن او الكيبورد
إقتباس :انا فهمت الكود بيتم ازاي

بس العمليات بتم بالكيبورد او الازرار عشان كدة عايز العملية تكون داخل التيكست الي بتظهر فيها العمليات بحدث TextChanged

عشان لو المستخدم استخدم البوتن او الكيبورد
يعني انت تحتاج  اما حدث KeyPress او حدث  KeyDown
فقط 
اكيد تعرف الباقي باين من ردك
إقتباس :الحدث ملوش علاقة بالازرار المفروض يكون موجود بحدث TextChanged
الف شكر علي ردك

جزاك الله كل خير
السلام عليكم ورحمة الله وبركاته
تفضل اخي محمد هذا الكود في حدث KeyPress
سوف يمنع اضافة اكثر من اشارة للعمليات الحسابية يسمح بواحدة فقط بين كل رقمين
كود :
Private Sub TextBox1_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TextBox1.KeyPress
       If TextBox1.Text.EndsWith("+") Or TextBox1.Text.EndsWith("-") Or TextBox1.Text.EndsWith("*") Or TextBox1.Text.EndsWith("/") Then
           If e.KeyChar = "+" Or e.KeyChar = "-" Or e.KeyChar = "*" Or e.KeyChar = "/" Then
               e.Handled = True
           End If
       End If
   End Sub
(12-04-20, 07:43 PM)ابراهيم ايبو كتب : [ -> ]السلام عليكم ورحمة الله وبركاته
تفضل اخي محمد هذا الكود في حدث KeyPress
سوف يمنع اضافة اكثر من اشارة للعمليات الحسابية يسمح بواحدة فقط بين كل رقمين
كود :
Private Sub TextBox1_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TextBox1.KeyPress
       If TextBox1.Text.EndsWith("+") Or TextBox1.Text.EndsWith("-") Or TextBox1.Text.EndsWith("*") Or TextBox1.Text.EndsWith("/") Then
           If e.KeyChar = "+" Or e.KeyChar = "-" Or e.KeyChar = "*" Or e.KeyChar = "/" Then
               e.Handled = True
           End If
       End If
   End Sub

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

تم حل المشكلة بفضل الله

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