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

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

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

自作したプロパティをデザイン画面のプロパティからいじれるよう

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

■98803 / inTopicNo.1)  自作したプロパティをデザイン画面のプロパティからいじれるよう
  
□投稿者/ ざんげ (1回)-(2021/12/23(Thu) 17:07:03)

分類:[VB.NET/VB2005 以降] 

VB 2017

カスタムコントロールで作成したテキストボックス(以降カスタムテキストボックス)に新たなプロパティを追加し、それをデザインのプロパティ画面でいじれるようにしたいのですがどのようにすればよいのでしょうか。

Imports System.ComponentModel
Imports System.Windows.Forms

Public Class CustomTextBox
Inherits TextBox

Private newPropertyValue As Boolean = False
Public Property NewProperty() As Boolean
Get
Return newPropertyValue
End Get
Set(ByVal value As Boolean)
newPropertyValue = value
End Set
End Property

Private Sub NewTextBox_Validating(sender As Object, e As CancelEventArgs) Handles Me.Validating
If Me.Text = "" Then
MessageBox.Show("何か書いて!")
End If
End Sub

End Class
引用返信 編集キー/
■98804 / inTopicNo.2)  Re[1]: 自作したプロパティをデザイン画面のプロパティからいじれるよう
□投稿者/ 魔界の仮面弁士 (3267回)-(2021/12/23(Thu) 17:12:23)
No98803 (ざんげ さん) に返信
> それをデザインのプロパティ画面でいじれるようにしたいのですが

どういう意味でしょうか?

投稿された CustomTextBox をコンパイルし、ツールボックス上からフォームに貼れば、
デザイン時に CustomTextBox1 の「NewProperty プロパティ」が登場して
デザイン時に True / False を設定できますし、さらにそれを
実行時に MsgBox(Me.CustomTextBox1.NewProperty) などとして
読み書き出来ますが……そういう話ではない?
引用返信 編集キー/
■98805 / inTopicNo.3)  Re[2]: 自作したプロパティをデザイン画面のプロパティからいじれるよう
□投稿者/ ざんげ (3回)-(2021/12/23(Thu) 17:17:29)
No98804 (魔界の仮面弁士 さん) に返信
> ■No98803 (ざんげ さん) に返信
>>それをデザインのプロパティ画面でいじれるようにしたいのですが
>
> どういう意味でしょうか?
>
> 投稿された CustomTextBox をコンパイルし、ツールボックス上からフォームに貼れば、
> デザイン時に CustomTextBox1 の「NewProperty プロパティ」が登場して
> デザイン時に True / False を設定できますし、さらにそれを
> 実行時に MsgBox(Me.CustomTextBox1.NewProperty) などとして
> 読み書き出来ますが……そういう話ではない?

返信ありがとうございます。
カスタムテキストボックスを張りなおしていなかったせいでNewProperty プロパティ」が登場していなかったみたいです。
張りなおしたら出てきました。

出ることには出たのですがほかのプロパティとは違いデザイン時に True / False が表示されずなんでも入力できてしまう状態なのですがこれはどうしたら True / False の選択になるかわかりますでしょうか。
引用返信 編集キー/
■98806 / inTopicNo.4)  Re[3]: 自作したプロパティをデザイン画面のプロパティからいじれるよう
□投稿者/ KOZ (198回)-(2021/12/23(Thu) 18:16:58)
No98805 (ざんげ さん) に返信
> 出ることには出たのですがほかのプロパティとは違いデザイン時に True / False が表示されずなんでも入力できてしまう状態なのですがこれはどうしたら True / False の選択になるかわかりますでしょうか。

ビルドが成功するまで修正は反映されません。
意図したとおり動かないのであれば、デザイン画面を閉じて開きなおしてみましょう。
引用返信 編集キー/
■98809 / inTopicNo.5)  Re[4]: 自作したプロパティをデザイン画面のプロパティからいじれるよう
□投稿者/ くま (118回)-(2021/12/23(Thu) 22:36:03)
プロパティ画面で表示するなら以下の設定があったほうが良いです
<System.ComponentModel.Category("プロパティのグループ")>
<System.ComponentModel.Description("プロパティの説明")>
<System.ComponentModel.DefaultValue(False)> ←プロパティウインドウでの既定値
<System.ComponentModel.DesignerSerializationVisibility(System.ComponentModel.DesignerSerializationVisibility.Content)>
← データ型によってはこれが必要

参考URLが良いのがなかったのですが...

デフォルト値設定
http://jsworld.jp/surasura/mgh?contentid=prg001p003

DefaultValue属性(Attribute)について
http://neareal.net/index.php?Programming%2F.NetFramework%2FTips%2FProperty%2FDefaultValueAttribute

ユーザーコントロール/カスタムコンロトールに追加したプロパティの型が独自クラス/カスタムクラスだった場合のデザイナ時の設定/保存方法。
https://plaza.rakuten.co.jp/nutristudio/diary/201309120000/


引用返信 編集キー/
■98818 / inTopicNo.6)  Re[5]: 自作したプロパティをデザイン画面のプロパティからいじれるよう
□投稿者/ ざんげ (4回)-(2021/12/24(Fri) 11:28:09)
No98809 (くま さん) に返信
> プロパティ画面で表示するなら以下の設定があったほうが良いです
> <System.ComponentModel.Category("プロパティのグループ")>
> <System.ComponentModel.Description("プロパティの説明")>
> <System.ComponentModel.DefaultValue(False)> ←プロパティウインドウでの既定値
> <System.ComponentModel.DesignerSerializationVisibility(System.ComponentModel.DesignerSerializationVisibility.Content)>
> ← データ型によってはこれが必要
>

ありがとうございます!!
設定を追加したら思い通りに動きました。
まだ機能実装は終わっていないのでURLも参考にさせていただきます。
引用返信 編集キー/
■98819 / inTopicNo.7)  Re[4]: 自作したプロパティをデザイン画面のプロパティからいじれるよう
□投稿者/ ざんげ (5回)-(2021/12/24(Fri) 11:33:25)
No98806 (KOZ さん) に返信
> ■No98805 (ざんげ さん) に返信
>>出ることには出たのですがほかのプロパティとは違いデザイン時に True / False が表示されずなんでも入力できてしまう状態なのですがこれはどうしたら True / False の選択になるかわかりますでしょうか。
>
> ビルドが成功するまで修正は反映されません。
> 意図したとおり動かないのであれば、デザイン画面を閉じて開きなおしてみましょう。

返信ありがとうございます。
問題は解決しましたが、おっしゃるように当たり前のことを試していませんでした。
次回からそのあたりも気を付けたいと思います。
解決済み
引用返信 編集キー/

このトピックをツリーで一括表示


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

このトピックに書きこむ