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

2021-06-19 05:30:46 字數 1599 閱讀 7278

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

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) }}

}

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...