C 讓控制項全屏顯示(WinForm)

2021-06-05 10:29:45 字數 1639 閱讀 6715

經過摸索,暫時發現兩種可行方法,如果有誰知道其他方法,敬請告知。

1.使用winapi 「setparent」 介面:

[dllimport("user32.dll", setlasterror = true)]

static extern intptr setparent(intptr hwndchild, intptr hwndnewparent);

複製**

control.dock = dockstyle.none;

control.left = 0;

control.top = 0;

control.width = screen.primaryscreen.bounds.width;

control.height = screen.primaryscreen.workingarea.height;

setparent(control.handle, intptr.zero);

複製**

執行上面的**後,我們的 control已經可以全屏顯示了,但還有乙個小問題,我們應該再提供乙個功能,讓使用者按某個鍵後,退出全屏,要不然關不掉,給誰用都比較鬱悶。這個時候應該給控制項新增相關事件,取到鍵後返回。我們以esc鍵為例:

private void addeventkeyup(control control) }}

void control_keyup(object sender, keyeventargs e)

}}

複製**

修改後的**如下:

control.dock = dockstyle.none;

control.left = 0;

control.top = 0;

control.width = screen.primaryscreen.bounds.width;

control.height = screen.primaryscreen.workingarea.height;

addeventkeyup(control);

control.focus();// 獲得焦點,否則也得不到按鍵

setparent(control.handle, intptr.zero);

複製**

2.新建乙個視窗,設定 formborderstyle為none,windowstate為maximized,topmost為true。然後具體**如下:

addeventkeyup(control);

原來的parent.controls.clear();

frmfullscreen frm = new frmfullscreen();

frm.controls.add(control);

frm.showdialog();

複製**

private void addeventkeyup(control control) }}

void control_keyup(object sender, keyeventargs e) }}

}

複製**

經過實際使用驗證,第二種方法很好,沒有任何問題。只是需要多開乙個視窗。第一種方法有點小問題,就是如果控制項上有右鍵選單什麼的,一呼叫 會跑到主介面去了。好像滑鼠有時候也不太靈。

扣扣:249775085

C 讓控制項全屏顯示(WinForm)

經過摸索,暫時發現兩種可行方法,如果有誰知道其他方法,敬請告知。1.使用winapi setparent 介面 dllimport user32.dll setlasterror true static extern intptr setparent intptr hwndchild,intptr ...

C 讓控制項全屏顯示(WinForm)

經過摸索,暫時發現兩種可行方法,如果有誰知道其他方法,敬請告知。1.使用winapi setparent 介面 dllimport user32.dll setlasterror true static extern intptr setparent intptr hwndchild,intptr ...

讓控制項全屏顯示(WinForm)

1.應用winapi setparent 介面 dllimport user32.dll setlasterror true static extern intptr setparent intptr hwndchild,intptr hwndnewparent 複製 control.dock do...