@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

ユーザーコントロールのスナップについて。

1
投稿者投稿内容
たけうち
会議室デビュー日: 2007/12/13
投稿数: 7
投稿日時: 2008-11-04 16:50
VS2008のフォームデザイナーでデザインする時、
スナップラインとか言うのが表示されて、各コントロールのフォントのベースラインに位置をあわす事ができると思います。

このフォントのベースラインに合わせる機能をユーザーコントロールに実装するには、どのようにしたらよいのでしょうか?

環境
Windows Vista.
VS2008 + VB + .NET3.5

ご存じの方が居ましたら、よろしくお願いします。
rain
ぬし
会議室デビュー日: 2006/10/19
投稿数: 549
投稿日時: 2008-11-04 17:37
引用:

たけうちさんの書き込み (2008-11-04 16:50) より:
VS2008のフォームデザイナーでデザインする時、
スナップラインとか言うのが表示されて、各コントロールのフォントのベースラインに位置をあわす事ができると思います。


そういう機能だったことを知らずに使ってました。勉強になります。
http://www.atmarkit.co.jp/fdotnet/vb2005/vb2005_11/vb2005_11_01.html

引用:

このフォントのベースラインに合わせる機能をユーザーコントロールに実装するには、どのようにしたらよいのでしょうか?


軽く調べただけですみませんが、ControlDesigner クラス とか SnapLine クラス とかを使えばいいのかなと思いました。
# 面白そうなので、暇があったら試してみたいなあ。

----- 追記
試そうとしたけど、私には難しそう orz

[ メッセージ編集済み 編集者: rain 編集日時 2008-11-04 17:48 ]
にー
常連さん
会議室デビュー日: 2006/04/30
投稿数: 35
投稿日時: 2008-11-04 21:40
私は実際に試していませんが、こんなサイトがありましたよ。

http://amrelsehemy.net/post/2008/02/Custom-Controls-Design-Time-Support-Part-13-Adding-Snaplines.aspx

私も先日から、カスタム・デザイナの件で、色々と調べていますが、
日本のサイトでは、まだ少ないかも。(私が見つけられないだけ?)
海外の方があるかも。

ご参考ください。
やす
会議室デビュー日: 2009/04/08
投稿数: 1
投稿日時: 2009-04-10 14:47
次の手順では、いかがでしょうか?
(1)新しい windows フォーム アプリケーションを作成
(2)プロジェクトに「System.Design」の参照を追加
(3)ユーザーコントロール(UserControl1)を追加
(4)UserControl1 にテキストボックス(TextBox1)を配置
(5)UserControl1 のソースを以下のようにする。

コード:

<System.ComponentModel.DesignerAttribute(GetType(ExampleControlDesigner2))> _
Public Class UserControl1

End Class

Friend Class ExampleControlDesigner2
Inherits System.Windows.Forms.Design.ControlDesigner
Public Overrides ReadOnly Property SnapLines() As _
System.Collections.IList
Get
Dim oSnapLine As IList
Dim oTextBox As TextBox
oTextBox = Me.Control.Controls(0)
oSnapLine = MyBase.SnapLines
oSnapLine.Add( _
New System.Windows.Forms.Design.Behavior.SnapLine( _
Windows.Forms.Design.Behavior.SnapLineType.Baseline, _
oTextBox.Top + _
SystemInformation.Border3DSize.Height + _
oTextBox.Font.GetHeight))
Return oSnapLine
End Get
End Property
End Class



申し訳ありませんが、テキストのベースラインの算出がよく判らなかったので
適当にしてあります。

#.net 勉強中のため、不適切な内容があると思います。
#不適切な箇所を示して頂ければ助かります。



[ メッセージ編集済み 編集者: やす 編集日時 2009-04-13 07:58 ]
1

スキルアップ/キャリアアップ(JOB@IT)