- りんご
- ベテラン
- 会議室デビュー日: 2006/12/21
- 投稿数: 51
|
投稿日時: 2007-04-16 13:48
こんにちは。いつも拝見させて頂いています。
SplitContainerの資料があまりないので、質問させてください。
開発環境 WindowsXP
言語 VB.NET
DB FireBird
SplitContainerを配置して、垂直方向に分割し、左のPanel1にはLabelを
右のPanel2にはTextBoxを配置して、Dock=Fillとしています。
このコントロールを実際にFormに実装すると、デザイン時には
Split分割線が表示されず、実行時だけ、Split移動可能となっています。
仕様なのでしょうが、この分割線の表示と移動を、デザイン時だけにしたい
場合、どのように記述したらよいのでしょうか?
ユーザーは分割線位置を変更できず、開発者が分割線位置を変更したいのです。
どなたかご教授ください。
よろしくお願いいたします。
コード: |
| Private Sub AplMsg_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Resize
Dim instance As SplitContainer = Me.SplitContainer1
Dim em As SplitterCancelEventArgs
If Me.DesignMode = True Then
instance.OnSplitterMoving(em)
End If
End Sub
|
|
- りんご
- ベテラン
- 会議室デビュー日: 2006/12/21
- 投稿数: 51
|
投稿日時: 2007-04-16 14:07
すみません。追加します。
カスタムコントロールとしてのSplitContainerの質問です。
Public Class AplMsg
Inherits UserControl
よろしくお願いいたします。
|
- burton999
- ぬし
- 会議室デビュー日: 2003/10/06
- 投稿数: 898
- お住まい・勤務地: 東京
|
投稿日時: 2007-04-16 14:45
ヘルプは読みましたか?
SplitContainer.IsSplitterFixed プロパティ (System.Windows.Forms)
http://msdn2.microsoft.com/ja-jp/library/system.windows.forms.splitcontainer.issplitterfixed(VS.80).aspx
|
- りんご
- ベテラン
- 会議室デビュー日: 2006/12/21
- 投稿数: 51
|
投稿日時: 2007-04-16 15:34
burton999さん。ご返答ありがとうございます。
実行時に、分割線の移動はできなくなりました。ありがとうございます。
ですが、デザイン時に、分割線を表示することができません。
Resizeイベントではないのでしょうか?
開発者がデザイン時に分割線移動ができるためには、
どのタイミングで、どうすればいいのか途方にくれています。
どなたかご教授のほど、よろしくお願いいたします。
コード: |
| Private Sub SplitContainer1_SplitterMoved(ByVal sender As Object, ByVal e As System.Windows.Forms.SplitterEventArgs) Handles SplitContainer1.SplitterMoved
If Me.DesignMode = True Then
Me.SplitContainer1.IsSplitterFixed = False '分割線を固定しない
Else
Me.SplitContainer1.IsSplitterFixed = True
End If
End Sub
Private Sub SplitContainer1_SplitterMoving(ByVal sender As Object, ByVal e As System.Windows.Forms.SplitterCancelEventArgs) Handles SplitContainer1.SplitterMoving
If Me.DesignMode = True Then
Me.SplitContainer1.IsSplitterFixed = False '分割線を固定しない
Else
Me.SplitContainer1.IsSplitterFixed = True
End If
End Sub
Private Sub AplMsg_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Resize, Me.Load
Dim em As SplitterCancelEventArgs
Dim instance As SplitContainer = Me.SplitContainer1
If Me.DesignMode = True Then
instance.IsSplitterFixed = False '分割線を固定しない
'instance.OnSplitterMoving(em)
Me.SplitContainer1.OnSplitterMoving(em)
Else
instance.IsSplitterFixed = True
End If
End Sub
|
|
- burton999
- ぬし
- 会議室デビュー日: 2003/10/06
- 投稿数: 898
- お住まい・勤務地: 東京
|
投稿日時: 2007-04-16 16:08
詳しくないですが、デザイン時のコントロールの動作は通常の実装とは異なるのではないでしょうか?
デザイン時サポートの拡張
http://msdn2.microsoft.com/ja-jp/library/37899azc(VS.80).aspx
開発したカスタムコントロールを製品として提供するのではないのであれば
デザイナからではなく、コード上で設定したほうがいいかと。
|
- まどか
- ぬし
- 会議室デビュー日: 2005/09/06
- 投稿数: 372
- お住まい・勤務地: ますのすし管区
|
投稿日時: 2007-04-16 16:14
引用: |
|
ですが、デザイン時に、分割線を表示することができません。
開発者がデザイン時に分割線移動ができるためには、
どのタイミングで、どうすればいいのか途方にくれています。
|
なんでコードでやろうとしてるのか?
ってよく考えたらユーザーコントロールでしたね。
内在コントロールのプロパティなので
Public Class AplMsg さんが公開してあげればと思いますが。。。
そしたら、利用者はプロパティウィンドウで
False設定 → デザイン作業 → True設定
とできますね。
|
- りんご
- ベテラン
- 会議室デビュー日: 2006/12/21
- 投稿数: 51
|
投稿日時: 2007-04-16 16:49
まどかさん、burton999さん、ご返答ありがとうございます。
以下のように、プロパティを作成してみました。
コード: |
| <Description("分割線")> _
Public Property IsSplitterFixed() As Boolean
Get
IsSplitterFixed = m_isSpliterFixed
End Get
Set(ByVal Value As Boolean)
m_isSpliterFixed = Value
If Me.DesignMode = True Then
m_isSpliterFixed = False
Me.SplitContainer1.IsSplitterFixed = False
Me.SplitContainer1.BorderStyle = Windows.Forms.BorderStyle.FixedSingle
End If
End Set
End Property
|
ですが、BoderStyleで分かりやすくなっただけで、動きはどうすれば
掴めるのでしょうか?
ユーザーコントロールをClickしても、選択されるだけで、内部の
SplitContailerの分割線を、アプリ開発者側がどうやって選択できるでしょう?
引用: |
| プロパティウィンドウで
False設定 → デザイン作業 → True設定
|
もう少し、詳しく教えていただけませんか?
よろしくお願いいたします。
|