C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: プロパティの作り方を教えて下さい。


(過去ログ 129 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■76301 / inTopicNo.1)  プロパティの作り方を教えて下さい。
  
□投稿者/ よぽん (44回)-(2015/06/22(Mon) 13:23:14)

分類:[.NET 全般] 

2015/06/22(Mon) 16:41:24 編集(投稿者)
2015/06/22(Mon) 16:41:16 編集(投稿者)

ユーザーコントロールにプロパティを追加しようとしています。

いくつかの中から一つを選ぶのは enum { a, b, c } でできたのですが、

pro = PRO.P1 | PRO.P2;
で複数を指定することができません。


どうすればよいのでしょうか?

public enum PRO { P1 = 0x01, P2 = 0x02, P3 = 0x04 };

public partial class UserControl1 : UserControl
{
PRO pro = PRO.P1;

public UserControl1()
{
InitializeComponent();
}

public PRO Pro
{
get { return (pro); }
set { pro = value; }
}
}


引用返信 編集キー/
■76302 / inTopicNo.2)  Re[1]: プロパティの作り方を教えて下さい。
□投稿者/ わくちゃん (16回)-(2015/06/22(Mon) 17:46:37)
No76301 (よぽん さん) に返信
> 2015/06/22(Mon) 16:41:24 編集(投稿者)
> 2015/06/22(Mon) 16:41:16 編集(投稿者)
>
> ユーザーコントロールにプロパティを追加しようとしています。
>
> いくつかの中から一つを選ぶのは enum { a, b, c } でできたのですが、
>
> pro = PRO.P1 | PRO.P2;
> で複数を指定することができません。
>
>
> どうすればよいのでしょうか?
>
> public enum PRO { P1 = 0x01, P2 = 0x02, P3 = 0x04 };
>
> public partial class UserControl1 : UserControl
> {
> PRO pro = PRO.P1;
>
> public UserControl1()
> {
> InitializeComponent();
> }
>
> public PRO Pro
> {
> get { return (pro); }
> set { pro = value; }
> }
> }
>
>

enumの値は適切に設定されていますのでその辺はご存じと仮定して、
enumにSystem.Flags属性を付与することで、複数のenum値を設定することができます。

詳細は下記をどうぞ。

MSDN FlagsAttribute クラス
https://msdn.microsoft.com/ja-jp/library/system.flagsattribute(v=vs.110).aspx
引用返信 編集キー/
■76303 / inTopicNo.3)  Re[2]: プロパティの作り方を教えて下さい。
□投稿者/ よぽん (45回)-(2015/06/22(Mon) 18:05:24)
標準で使用できるエディタでは選択できないということでしょうか?

プロパティエディタを作らなければいけないのですか?

それとも、デザイナーからの設定はあきらめて、
プロパティ値の初期設定はロードイベント等で設定するということなのでしょうか?
引用返信 編集キー/
■76304 / inTopicNo.4)  Re[3]: プロパティの作り方を教えて下さい。
□投稿者/ わくちゃん (17回)-(2015/06/22(Mon) 18:50:30)
No76303 (よぽん さん) に返信
> 標準で使用できるエディタでは選択できないということでしょうか?
>
> プロパティエディタを作らなければいけないのですか?
>
> それとも、デザイナーからの設定はあきらめて、
> プロパティ値の初期設定はロードイベント等で設定するということなのでしょうか?


VisualStudioのデザイナから追加したコンポーネントの複数選択可能な列挙体プロパティに対して
複数の値を設定したいということでしょうか?

例えば PRO.P1 | PRO.P2 を設定したい場合は、2進表記で(01 | 10) = 11ですので
デザイナのプロパティ値に「3」と入力すれば可能です。

またはenumに
[Flags]
public enum PRO
{
P1 = 1,
P2 = 2,
P3 = 4,
P1P2 = P1 | P2,
P1P3 = P1 | P3,
P2P3 = P2 | P3
};
こんな感じで定義してしまうとか。


それ以外の方法で設定したい場合は、プロパティエディタを作成することになりますね。


引用返信 編集キー/
■76305 / inTopicNo.5)  Re[3]: プロパティの作り方を教えて下さい。
□投稿者/ PANG2 (86回)-(2015/06/22(Mon) 18:55:09)
> プロパティエディタを作らなければいけないのですか?

TypeConverterを用意すればよいです。

[TypeConverter(typeof(CustomClassConverter))]
public class CustomClass
{
public bool A { get; set; }
public bool B { get; set; }
public bool C { get; set; }
}


TypeConverterは以下を参照
http://dobon.net/vb/dotnet/control/propertygrid.html
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -