トップ回答者
WPF CANVAS上に貼り付けたコントロールの位置の指定

質問
-
canvas1.Children.Add(label1) として、Canvas上にLabelコントールを貼り付ける位置を指定したいと思っています。
WEBサイトで調べたところ、次のようにすれば良いと分かったのですが、
label1.SetValue(canvas1.LeftProperty, 720)
label1.SetValue(canvas1.TopProperty, 40)
ここで、720という数値の部分で例外が発生します。
System.ArgumentException: ''720' は、プロパティ 'Left' の有効な値ではありません。'
どうすれば例外が発生しなくなるのか教えて下さい。
回答
-
SetValueの第二引数はobject型なので、どんな方でも受け入れてしまいます。
ですが、CanvasのLeftPropertyはdouble型と決まっているので、int型を入れると自動変換はしてくれずにエラーになってます。Canvas.SetLeftを使うか、double型として渡すといいです。
System.Windows.Controls.Canvas.SetLeft(label1, 720);//これは引数がdouble型なので自動変換してくれる double d = 720; label1.SetValue(System.Windows.Controls.Canvas.LeftProperty, 720.0);//.0をつけることで浮動小数と解釈してくれる label1.SetValue(System.Windows.Controls.Canvas.LeftProperty, (double)720);//double型にしてから入れる label1.SetValue(System.Windows.Controls.Canvas.LeftProperty, d);//double型の変数で入れる
個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)
- 回答としてマーク huahi11112 2018年10月20日 7:30
すべての返信
-
SetValueの第二引数はobject型なので、どんな方でも受け入れてしまいます。
ですが、CanvasのLeftPropertyはdouble型と決まっているので、int型を入れると自動変換はしてくれずにエラーになってます。Canvas.SetLeftを使うか、double型として渡すといいです。
System.Windows.Controls.Canvas.SetLeft(label1, 720);//これは引数がdouble型なので自動変換してくれる double d = 720; label1.SetValue(System.Windows.Controls.Canvas.LeftProperty, 720.0);//.0をつけることで浮動小数と解釈してくれる label1.SetValue(System.Windows.Controls.Canvas.LeftProperty, (double)720);//double型にしてから入れる label1.SetValue(System.Windows.Controls.Canvas.LeftProperty, d);//double型の変数で入れる
個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)
- 回答としてマーク huahi11112 2018年10月20日 7:30