|
■No79987 (ピル さん) に返信 > VBでは、例えばladel1.Text=ladel1.Text+1
「Option Stict On」にしていた場合、VB で上記は使えなくなります。
label1.Text プロパティのデータ型は String、 リテラル「1」のデータ型は Integer 型であり、 それぞれのデータ型が異なるからです。
> C#だと横に1111111111になってしまのですがどうしてですか?
VB の場合: 「数値 + 文字列」や「文字列 + 数値」は「Double型としての加算」の意味です。 「数値 & 文字列」や「文字列 & 数値」ならば「文字列連結」の意味です。
C# の場合: 「数値 + 文字列」や「文字列 + 数値」は「文字列連結」の意味です。
ちなみに「"123" * 4」を実行した場合、 VB は「Double 型の 492」 C# はエラー PowerShell は「String 型の "123123123123"」 だったりします。
> ほかのやり方があるのですか? Label は「表示」に特化したものなので、 加算用の値は、別に用意しておいたほうが良いでしょう。
private int displayValue = 100;
public Form1() { InitializeComponent(); label1.Text = displayValue.ToString(); }
private void button1_Click(object sender, EventArgs e) { displayValue++; label1.Text = displayValue.ToString(); }
もしも Label という「表示専用」のコントロールではなく、 「入力」にも対応したコントロールを使いたいのであれば、 NumericUpDown コントロールを使うことができます。
numericUpDown1.Value += 1m;
どうしても、NumericUpDown ではなく、TextBox や Label を 使いたいというのであれば、データ型変換が必要です。
この場合、Convert.ToInt32 メソッドや int.TryParse メソッドなどを通じて、 Text プロパティ(string 型)から int 型への変換を行うことができます。
|