オノデラ
|
参加日: 2005-12-18 |
投稿数: 30 |
|
|
4分割スプリットのやり方 投稿日時: 2005-12-28 午後 12:14 |
MFC などでは最初からスプリットで4分割画面を構成できたのですが、 .NET Framework ではどのように実現したらいいのでしょうか?
Visual C# 2005 を使用していて、スプリットは基本的に splitContainer を使用しています。
例えば最初に垂直バーのスプリットコンテナを入れて、そのあと、両パネルに水平バーの スプリットコンテナを入れてもお互いにバーが同期しないので困っています。
オリジナルのコントロールを作成するしかないのでしょうか? |
|
|
|
Re: 4分割スプリットのやり方 投稿日時: 2005-12-28 午後 3:47 |
どのSplitterがクリックされたかの判断と SplitterMoving/SplitterMovedを工夫すれば 可能なようです
Splitter2/Splitter3が対象であるとするならば Formレベルで どのSplitterがクリックされたのかを記憶する変数を用意します
int nSplitter;
Private void splitter2_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
nSpltter = 2;
}
Private void splitter3_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
nSpltter = 3;
}
private void splitter2_SplitterMoving(object sender, System.Windows.Forms.SplitterEventArgs e)
{
if ( nSplitter !=2 )
return;
splitter3.SplitPosition = splitter2.SplitPosition;
}
private void splitter3_SplitterMoved(object sender, System.Windows.Forms.SplitterEventArgs e)
{
if ( nSplitter !=2 )
return;
splitter3.SplitPosition = splitter2.SplitPosition;
nSplitter = 0;
}
private void splitter3_SplitterMoving(object sender, System.Windows.Forms.SplitterEventArgs e)
{
if ( nSplitter !=3 )
return;
splitter2.SplitPosition = splitter3.SplitPosition;
}
private void splitter3_SplitterMoved(object sender, System.Windows.Forms.SplitterEventArgs e)
{
if ( nSplitter !=3 )
return;
splitter2.SplitPosition = splitter3.SplitPosition;
nSplitter = 0;
}
といった具合でどうでしょう |
|
|
オノデラ
|
参加日: 2005-12-18 |
投稿数: 30 |
|
|
Re: 4分割スプリットのやり方 投稿日時: 2005-12-28 午後 4:00 |
返信ありがとうございます。
私もこのような処理は少し考えていたのですが、 ちょうど水平バーと垂直バーの交差部分をドラッグするときに 同時に移動させることが出来ないという部分に引っかかっています。
一応今考えているのは、親のバーを MouseMove で常に子のバーの位置を 監視して、ちょうど重なったところでマウスカーソルを変えるなり、フラグ立てるなどして 移動させることを考えています。
他にいい方法があるとか、最初から4分割スプリットがあるなど 何かあればお願いします。 |
|
|
|
Re: 4分割スプリットのやり方 投稿日時: 2005-12-29 午前 1:39 |
ご投稿のように 垂直(または水平)スプリッタなどで 他方の重なる部分の監視といった方向が現実的でしょう
MFCの分割ウィンドウは C#で言うところの Formレベルでの実現です Formを MDIにして作成して 自前の処理をいくつか追加しているようです
縦横のスクロールのコントロールや 現在のどのペインがアクティブなのかなど ... MFCのソースの winsplit.cppなどを調べてみるといったことをしてみてください
標準的なインストールパスなら C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\src になると思います
確かインストール時のオプションで指定しないとインストールされていないはずですが ... |
|
|
オノデラ
|
参加日: 2005-12-18 |
投稿数: 30 |
|
|
Re: 4分割スプリットのやり方 投稿日時: 2005-12-29 午後 12:41 |
やっぱり標準では4分割は無いようですね。
何とか自前で実装してみたいと思います。 いろいろありがとうございました。 |
|
|