0

さて、C#でフォームを作りました。ボタンや画像などのコントロールを実行時に移動できます。とにかく、プログラムの画面からコントロールをドラッグできないように、何らかの目に見えない境界線を作成できる方法があるかどうか疑問に思っていました。Windows と同様に、ウィンドウを画面領域の外にドラッグできます。私はあなたにそれをさせたくありません。また、コントロールの周りに境界線を作成して、それらを互いにドラッグできないようにすることもできるかどうかを確認したかったのです。どんな助けでも素晴らしいでしょう!ありがとう!

さて、私は WinForms で DevExpress DXv2 を使用しています。

    private void groupControl2_MouseMove(object sender, MouseEventArgs e)
    {
        if (e.Button == MouseButtons.Left)
        {
            groupControl2.Left += e.X - move.X;
            groupControl2.Top += e.Y - move.Y;
        }
    }

    private void groupControl2_MouseDown(object sender, MouseEventArgs e)
        {
             move = e.Location;
        }
4

1 に答える 1

0

ドラッグ アンド ドロップするパネルを提供するある種のコントロール アセンブリを使用しているようです。

最初に、そのコントロール ライブラリに、表示されているウィンドウ領域の外に移動する機能が組み込まれているかどうかを確認します。

パネルが移動したことを示すイベントがあると思います。次の疑似コードを確認してください。

if (panel.Left < 0) { } // Outside left border
if (panel.Top < 0) { } // Outside top border
if ((panel.Left + panel.Width) > form.Width){ } // Outside right border
if ((panel.Top + panel.Height) > form.Height) { } // Outside bottom border

また:

イベントがキャンセルをサポートしている場合、上記のいずれかに該当する場合はキャンセルします。それ以外の場合は、この疑似コードのようなものを実装できます (実際の WinForms の寸法には少し異なる値が必要です)

// Outside left border
if (panel.Left < 0) { panel.Left = 0; }

// Outside top border
if (panel.Top < 0) { panel.Top = 0; } 

// Outside right border
if ((panel.Left + panel.Width) > form.Width)
{
    panel.Left = form.Width - panel.Width;
} 

// Outside bottom border
if ((panel.Top + panel.Height) > form.Height)
{
    panel.Top = (form.Height - panel.Height);
} 
于 2012-07-10T06:59:40.947 に答える