Tôi đang sử dụng mã sau để phát hiện xem người dùng có ở chế độ máy tính bảng hay không. Tôi đang ở trên Surface Pro và khi tôi tách bàn phím và biến PC thành máy tính bảng, IsTabletMode
trả về giá trị true (khi cần.) Khi tôi sử dụng nút "Chế độ máy tính bảng" mà không tách màn hình, IsTabletMode
luôn trả về giá trị sai. Có ai có kinh nghiệm này không và tôi có thể giải quyết nó như thế nào?Cách phát hiện chế độ máy tính bảng
/*
* Credit to Cheese Lover
* Retrieved From: http://stackoverflow.com/questions/31153664/how-can-i-detect-when-window-10-enters-tablet-mode-in-a-windows-forms-applicatio
*/
public static class TabletPCSupport
{
private static readonly int SM_CONVERTIBLESLATEMODE = 0x2003;
private static readonly int SM_TABLETPC = 0x56;
private Boolean isTabletPC = false;
public Boolean SupportsTabletMode { get { return isTabletPC; }}
public Boolean IsTabletMode
{
get
{
return QueryTabletMode();
}
}
static TabletPCSupport()
{
isTabletPC = (GetSystemMetrics(SM_TABLETPC) != 0);
}
[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto, EntryPoint = "GetSystemMetrics")]
private static extern int GetSystemMetrics (int nIndex);
private static Boolean QueryTabletMode()
{
int state = GetSystemMetrics(SM_CONVERTIBLESLATEMODE);
return (state == 0) && isTabletPC;
}
}
Liệu PC phát hiện bàn phím khi ở chế độ máy tính bảng và bàn phím được gắn vào? (Tôi không thể kiểm tra điều này.) Nếu vậy, bạn sẽ có thể thêm logic dựa trên sự hiện diện của bàn phím. –
PC không phát hiện bàn phím khi ở chế độ máy tính bảng. Tôi không tìm cách phát hiện xem bàn phím có tồn tại hay không, tôi đang tìm kiếm để phù hợp với chủ đề của ứng dụng của tôi với chủ đề "máy tính bảng" cửa sổ. Bạn biết các nút lớn hơn, v.v. Sự tồn tại của bàn phím không mang về điều này. –
Bạn đã thử "giải pháp" được đăng trong câu hỏi của câu trả lời bạn đã liên kết chưa? – Brunner