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

わんくま同盟

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

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

ツリー一括表示

TrackBarのOnPaintをいじる方法 /権太 (18/06/28(Thu) 22:53) #87767
Re[1]: TrackBarのOnPaintをいじる方法 /Hongliang (18/06/28(Thu) 23:09) #87768
  └ Re[2]: TrackBarのOnPaintをいじる方法 /権太 (18/06/29(Fri) 22:15) #87790


親記事 / ▼[ 87768 ]
■87767 / 親階層)  TrackBarのOnPaintをいじる方法
□投稿者/ 権太 (1回)-(2018/06/28(Thu) 22:53:53)

分類:[.NET 全般] 

ProgressBarなどの場合には、

Public Class ProgressBar2
Inherits ProgressBar

Protected Overrides Sub OnPaint(e As PaintEventArgs)

End Sub
End Class


のようにして、ProgressBarの外観をいじることができました。

一方で、TrackBarの場合にも同様に


Public Class TrackBar2
Inherits TrackBar

Protected Overrides Sub OnPaint(e As PaintEventArgs)

End Sub
End Class

とやってみたのですが、
ブレイクポイントをOnPaintの中に置いても
そこで停止されないので、
どうもOnPaintの中もプログラムは実行されていないようです。

https://msdn.microsoft.com/en-us/library/system.windows.forms.trackbar(v=vs.110).aspx

このページを確認すると
OnPaintはサポートしていると思うのですが
一体なぜでしょうか?


[ □ Tree ] 返信 編集キー/

▲[ 87767 ] / ▼[ 87790 ]
■87768 / 1階層)  Re[1]: TrackBarのOnPaintをいじる方法
□投稿者/ Hongliang (653回)-(2018/06/28(Thu) 23:09:20)
https://msdn.microsoft.com/en-us/library/system.windows.forms.trackbar.paint.aspx
OnPaintが発生させるPaintイベントの方を見れば書かれていますが、インフラ用であってコードから使うものでは無い、です。
一応、TrackBar派生クラスのコンストラクタ等で
SetStyle(ControlStyles.UserPaint, True)
としてやればOnPaint/Paintが動くようですが多分挙動は保証されません。
[ 親 87767 / □ Tree ] 返信 編集キー/

▲[ 87768 ] / 返信無し
■87790 / 2階層)  Re[2]: TrackBarのOnPaintをいじる方法
□投稿者/ 権太 (2回)-(2018/06/29(Fri) 22:15:27)
ありがとうございます。
SetStyle(ControlStyles.UserPaint, True)

というのはどのように使用すれば良いですか?

自分でトラックバーを作りたいのですが
https://msdn.microsoft.com/ja-jp/library/system.windows.forms.trackbarrenderer.aspx?cs-save-lang=1&cs-lang=vb#code-snippet-2

このページのコードを使ってみたところ
ツールボックスからD&Dでフォームに移そうとすると
以下のエラーメッセージが表示されます
一体どうすれば良いですか?


---------------------------
Microsoft Visual Studio
---------------------------
コンポーネント 'CustomTrackBar' を生成できませんでした。 エラー メッセージ:

'System.MissingMethodException: 型 'WindowsApplication1.TrackBarRendererSample.CustomTrackBar' にコンストラクターが見つかりませんでした。

場所 System.RuntimeType.CreateInstanceImpl(BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes, StackCrawlMark& stackMark)

場所 System.Activator.CreateInstance(Type type, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes)

場所 System.Activator.CreateInstance(Type type, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture)

場所 System.ComponentModel.Design.DesignSurface.CreateInstance(Type type)

場所 Microsoft.VisualStudio.Design.VSDesignSurface.CreateInstance(Type type)

場所 System.ComponentModel.Design.DesignerHost.System.ComponentModel.Design.IDesignerHost.CreateComponent(Type componentType, String name)

場所 System.ComponentModel.Design.DesignerHost.System.ComponentModel.Design.IDesignerHost.CreateComponent(Type componentType)

場所 System.Dra...'
---------------------------
OK
---------------------------




[ 親 87767 / □ Tree ] 返信 編集キー/


管理者用

- Child Tree -