2

私はこの問題に取り組んできましたが、どうすればよいかわかりません。

WindowsフォームとWPFフォームの両方を含むプロジェクトがあります。

すべてのフォームを次のように表示したい(WPFのもの):

WPF = http://imageshack.us/photo/my-images/545/wpfk.png/

私はこのウィンドウスタイル=なしとcanresize=はいを達成しました。実際にサイズを変更したくありません。フォームの周りにその細い境界線が欲しいだけです。しかし、canresize = falseとすると、境界線が失われます。また、その場所で静止しないように、画面内のウィンドウを移動できるようにしたいです。

私のwinformsにもそれがすべて必要です。

Winforms:WINFORM = http://imageshack.us/photo/my-images/836/winforms.png/

私が必要なものを皆さんが理解してくれることを願っています。グラフィック的には、最初の画像のようにする必要があります。

4

3 に答える 3

1

それが役立つかどうかはわかりませんが、このためのフォームコレクションを作成できます。(a)

http://support.microsoft.com/kb/815707/en-us

于 2012-12-05T15:19:05.857 に答える
1

デザイナでWinFormsFormBorderStyleプロパティをSizable、などに設定する必要があります。これらの1つはFixedDialogFixed3D必要な動作を提供するためにバインドされています。

于 2012-12-05T15:19:38.443 に答える
1

解決策:このコードをフォームまたはベースフォームに貼り付けます。

private const int WS_SYSMENU = 0x80000;
protected override CreateParams CreateParams
{
    get
    {
        CreateParams cp = base.CreateParams;
        cp.Style &= ~WS_SYSMENU;
        return cp;
    }
}

助けてくれたKillercamに感謝します!

WPFウィンドウのソリューション:

public MainWindow()
    {
        SourceInitialized += Window_SourceInitialized;
        InitializeComponent();
    }

    private void button2_Click(object sender, RoutedEventArgs e)
    {
        this.Close();
    }

    private void button3_Click(object sender, RoutedEventArgs e)
    {
        this.WindowState = WindowState.Minimized;
    }

    private void Window_SourceInitialized(object sender, EventArgs e)
    {
        WindowInteropHelper wih = new WindowInteropHelper(this);
        int style = GetWindowLong(wih.Handle, GWL_STYLE);
        SetWindowLong(wih.Handle, GWL_STYLE, style & ~WS_SYSMENU);
    }

    private const int GWL_STYLE = -16;
    private const int WS_SYSMENU = 0x00080000;

    [DllImport("user32.dll")]
    private extern static int SetWindowLong(IntPtr hwnd, int index, int value);
    [DllImport("user32.dll")]
    private extern static int GetWindowLong(IntPtr hwnd, int index);
于 2012-12-05T22:07:44.180 に答える