কেন আমি তার জন্য ঘোষিত পরিবর্তনশীল ব্যবহার করে একটি বোতাম কোড করতে পারি না তবে আমি ভিজ্যুয়াল বেসিকের মধ্যে কোন পরিবর্তনশীল ঘোষণা না করে বোতামটি ব্যবহার করতে পারি?

আমি ভিজ্যুয়াল বেসিক, উইন্ডোজ ফরম অ্যাপে একটি প্রকল্পে কাজ করছি। আমি একটি বোতাম তৈরি করেছি (এবং আমি এটি বোতাম 0 বলেছি) এবং এর জন্য ক্লিক ইভেন্ট পরিচালনা করার চেষ্টা করার সময়, আমি এর জন্য একটি পরিবর্তনশীল ঘোষণা করেছি যাতে:

Public Class Project
    Dim txtAnswer As String
    Public Sub button0_Click(sender As Object, e As EventArgs) Handles button0.Click
        txtAnswer = answerBox.Text
        If txtAnswer.Length = 0 Then
            txtAnswer = "0"
        End If
    End Sub
End Class

কিন্তু যখনই আমি বোতামে ক্লিক করি তখন টেক্সট বক্সটি '0' আউটপুট হয় না। কিন্তু, যখন আমি এটি চেষ্টা করি, এটি করে:

Public Class Project
    Public Sub button0_Click(sender As Object, e As EventArgs) Handles button0.Click
        If answerBox.Text.Length = 0 Then
            answerBox.Text= "0"
        End If
    End Sub
End Class

যখনই আমি একটি পরিবর্তনশীল ঘোষণা, এটি কাজ করে না, কিন্তু যখন আমি না, এটা কাজ করে। আমি কি ভুল করছি?

2
স্ট্রিং কপি করা হয়, উল্লেখ করা হয় না। যখন আপনি txtAnswer = answerBox.Text করবেন তখন এর অর্থ হবে, তারপর txtAnswer একটি অনুলিপি পৃথক হতে হবে .extext সম্পত্তি। শুধু শেষে এটি সেট করুন: answerBox.Text = txtAnswer
যোগ লেখক the_lotus, উৎস
স্ট্রিং কপি করা হয়, উল্লেখ করা হয় না। যখন আপনি txtAnswer = answerBox.Text করবেন তখন এর অর্থ হবে, তারপর txtAnswer একটি অনুলিপি পৃথক হতে হবে .extext সম্পত্তি। শুধু শেষে এটি সেট করুন: answerBox.Text = txtAnswer
যোগ লেখক the_lotus, উৎস
আপনার প্রথম কোড উদাহরণে আপনার পরিবর্তনশীল txtAnswer answerBox.Text থেকে পাঠ্যের একটি অনুলিপি ধারণ করে। আপনার সমস্ত পরিবর্তনগুলি কপি সহ পরিবর্তনশীল হয়, পাঠ্যবাক্সে নয়। আপনি txtAnswer পরিবর্তনশীলের মানটি answerBox.Text এর মান লিখতে হবে।
যোগ লেখক GuidoG, উৎস
আপনার প্রথম কোড উদাহরণে আপনার পরিবর্তনশীল txtAnswer answerBox.Text থেকে পাঠ্যের একটি অনুলিপি ধারণ করে। আপনার সমস্ত পরিবর্তনগুলি কপি সহ পরিবর্তনশীল হয়, পাঠ্যবাক্সে নয়। আপনি txtAnswer পরিবর্তনশীলের মানটি answerBox.Text এর মান লিখতে হবে।
যোগ লেখক GuidoG, উৎস
txtAnswer একটি রেফারেন্স পাঠ্য সম্পত্তি নয়, এটি কেবল একটি পরিবর্তনশীল। যদি আপনি txtAnswer চেঞ্জ করেন তবে আপনি কেবল সেই কোডটির মান পরিবর্তন করেন, answerBox.Text সম্পত্তিটির নয়।
যোগ লেখক René Vogt, উৎস

6 উত্তর

ডেভিড এবং ব্রায়ান্ট 1003 এর সঠিক উত্তর থাকলে, চূড়ান্ত কোডটি একটু রাউন্ড-এ-বিউট। টাইট কোডিং স্বার্থে:

Public Class Project
    Public Sub button0_Click(sender As Object, e As EventArgs) Handles button0.Click
        answerBox.Text = if(answerBox.Text.Length = 0, "0", answerBox.Text)
    End Sub
End Class

স্থানীয় পরিবর্তনশীল শুধুমাত্র একটি সাময়িক ধারক হিসাবে পূর্ববর্তী উদাহরণ ব্যবহার করা হয়। যদি বিবৃতিটি পরে .Net সংস্করণগুলিতে বৈধ এবং VBA তে বৈধ নয়। এই ক্ষেত্রে, এটি IIf ব্যবহার করা নিরাপদ।

অবশ্যই, যদি আপনি উত্তর Box.Text এ আরও ক্রিয়াকলাপ করেন, আপনি একটি অস্থায়ী পরিবর্তনশীল নির্ধারণ করতে বিবেচনা করতে পারেন। তবে যেটি প্রয়োজন তা নির্ভর করে আপনি যা করতে চান তার উপর নির্ভর করবে।

1
যোগ

ডেভিড এবং ব্রায়ান্ট 1003 এর সঠিক উত্তর থাকলে, চূড়ান্ত কোডটি একটু রাউন্ড-এ-বিউট। টাইট কোডিং স্বার্থে:

Public Class Project
    Public Sub button0_Click(sender As Object, e As EventArgs) Handles button0.Click
        answerBox.Text = if(answerBox.Text.Length = 0, "0", answerBox.Text)
    End Sub
End Class

স্থানীয় পরিবর্তনশীল শুধুমাত্র একটি সাময়িক ধারক হিসাবে পূর্ববর্তী উদাহরণ ব্যবহার করা হয়। যদি বিবৃতিটি পরে .Net সংস্করণগুলিতে বৈধ এবং VBA তে বৈধ নয়। এই ক্ষেত্রে, এটি IIf ব্যবহার করা নিরাপদ।

অবশ্যই, যদি আপনি উত্তর Box.Text এ আরও ক্রিয়াকলাপ করেন, আপনি একটি অস্থায়ী পরিবর্তনশীল নির্ধারণ করতে বিবেচনা করতে পারেন। তবে যেটি প্রয়োজন তা নির্ভর করে আপনি যা করতে চান তার উপর নির্ভর করবে।

1
যোগ

txtAnswer and answerBox.Text are not mirroring each other, as you're thinking they are.

আপনার প্রথম উদাহরণে, আপনি আপনার পরিবর্তনশীলটিকে পাঠ্যবক্সের মানটি সংরক্ষণ করতে সেট করছেন। তারপর, যদি স্ট্রিংটির দৈর্ঘ্য 0 হয়, তবে আপনি এটি "0" সংরক্ষণ করতে সেট করছেন। এটি answerBox.Text তে এছাড়াও টি "0" সেট করে না।

আপনার দ্বিতীয় উদাহরণে, আপনি একটি সংযোগযুক্ত পরিবর্তনশীলের পরিবর্তে "0" প্রদর্শনের জন্য পাঠ্যবক্সটি আপডেট করছেন।

আপনি যদি আপনার প্রথম উদাহরণ হিসাবে একটি পরিবর্তনশীল ব্যবহার করতে চান, আপনি করতে হবে

Public Class Project
Dim txtAnswer As String

  Public Sub button0_Click(sender As Object, e As EventArgs) Handles button0.Click

      txtAnswer = answerBox.Text

      If txtAnswer.Length = 0 Then
          txtAnswer = "0"
      End If

      answerBox.Text = txtAnswer
  End Sub
End Class

আপনি কেবল TextBox.Text সম্পত্তিটি স্বয়ংক্রিয়ভাবে আপডেট করতে পারেন কারণ আপনি একটি পরিবর্তনশীল আপডেট করেছেন। আপনি পরিবর্তনশীল মান ব্যবহার করার জন্য এটি বলতে হবে।

0
যোগ

txtAnswer and answerBox.Text are not mirroring each other, as you're thinking they are.

আপনার প্রথম উদাহরণে, আপনি আপনার পরিবর্তনশীলটিকে পাঠ্যবক্সের মানটি সংরক্ষণ করতে সেট করছেন। তারপর, যদি স্ট্রিংটির দৈর্ঘ্য 0 হয়, তবে আপনি এটি "0" সংরক্ষণ করতে সেট করছেন। এটি answerBox.Text তে এছাড়াও টি "0" সেট করে না।

আপনার দ্বিতীয় উদাহরণে, আপনি একটি সংযোগযুক্ত পরিবর্তনশীলের পরিবর্তে "0" প্রদর্শনের জন্য পাঠ্যবক্সটি আপডেট করছেন।

আপনি যদি আপনার প্রথম উদাহরণ হিসাবে একটি পরিবর্তনশীল ব্যবহার করতে চান, আপনি করতে হবে

Public Class Project
Dim txtAnswer As String

  Public Sub button0_Click(sender As Object, e As EventArgs) Handles button0.Click

      txtAnswer = answerBox.Text

      If txtAnswer.Length = 0 Then
          txtAnswer = "0"
      End If

      answerBox.Text = txtAnswer
  End Sub
End Class

আপনি কেবল TextBox.Text সম্পত্তিটি স্বয়ংক্রিয়ভাবে আপডেট করতে পারেন কারণ আপনি একটি পরিবর্তনশীল আপডেট করেছেন। আপনি পরিবর্তনশীল মান ব্যবহার করার জন্য এটি বলতে হবে।

0
যোগ

সমস্যাটি হল যে আপনি মানটি "উত্তরবক্স" তে ফেরত দিচ্ছেন না।

পরিবর্তনশীলটি আপনার সাবমের প্রথম লাইনটিতে txtAnswer তে জনসংখ্যা (পড়া: অনুলিপি) করা হয়। এটি অনুলিপি করা হয়েছে, আপনার স্ট্রিং শেষ করার পরে আপনাকে স্ট্রিংটি আবার পাঠ্যবক্সে রাখতে হবে। যোগ লাইন দিয়ে নীচের কোড দেখুন;

Public Class Project
    Dim txtAnswer As String
    Public Sub button0_Click(sender As Object, e As EventArgs) Handles button0.Click
        txtAnswer = answerBox.Text
        If txtAnswer.Length = 0 Then
            txtAnswer = "0"
        End If
        ' The below line puts the value from the variable txtAnswer back into the textbox
        answerBox.Text = txtAnswer
    End Sub
End Class
0
যোগ

সমস্যাটি হল যে আপনি মানটি "উত্তরবক্স" তে ফেরত দিচ্ছেন না।

পরিবর্তনশীলটি আপনার সাবমের প্রথম লাইনটিতে txtAnswer তে জনসংখ্যা (পড়া: অনুলিপি) করা হয়। এটি অনুলিপি করা হয়েছে, আপনার স্ট্রিং শেষ করার পরে আপনাকে স্ট্রিংটি আবার পাঠ্যবক্সে রাখতে হবে। যোগ লাইন দিয়ে নীচের কোড দেখুন;

Public Class Project
    Dim txtAnswer As String
    Public Sub button0_Click(sender As Object, e As EventArgs) Handles button0.Click
        txtAnswer = answerBox.Text
        If txtAnswer.Length = 0 Then
            txtAnswer = "0"
        End If
        ' The below line puts the value from the variable txtAnswer back into the textbox
        answerBox.Text = txtAnswer
    End Sub
End Class
0
যোগ