मैं एक ऐसा फॉर्म कैसे ले सकता हूं जो वर्तमान में कम हो गया है और इसे अपने पिछले राज्य में पुनर्स्थापित कर सकता है। मुझे यह निर्धारित करने का कोई तरीका नहीं मिल रहा है कि उसका पिछला WindowState
Normal
या Maximized
था; लेकिन मुझे पता है कि जानकारी कहीं भी संग्रहीत की जानी चाहिए क्योंकि विंडोज़ को टास्कबार पर ऐप्स के साथ ऐसा करने में कोई समस्या नहीं है।सी # प्रोग्रामेटिक रूप से फॉर्म को कम करें
उत्तर
इसके लिए कोई प्रबंधित API नहीं है। ऐसा करने का तरीका PInvoke GetWindowPlacement है और WPF_RESTORETOMAXIMIZED
के लिए जांचें।
विवरण के लिए, यह Microsoft How To देखें (जो वीबी में तकनीक का प्रदर्शन कर रहा है)।
सी # में, यह होगा:
[DllImport("user32.dll", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
private static extern bool GetWindowPlacement(IntPtr hWnd, ref WINDOWPLACEMENT lpwndpl);
private struct WINDOWPLACEMENT
{
public int length;
public int flags;
public int showCmd;
public System.Drawing.Point ptMinPosition;
public System.Drawing.Point ptMaxPosition;
public System.Drawing.Rectangle rcNormalPosition;
}
public void RestoreFromMinimzied(Form form)
{
const int WPF_RESTORETOMAXIMIZED = 0x2;
WINDOWPLACEMENT placement = new WINDOWPLACEMENT();
placement.length = Marshal.SizeOf(placement);
GetWindowPlacement(form.Handle, ref placement);
if ((placement.flags & WPF_RESTORETOMAXIMIZED) == WPF_RESTORETOMAXIMIZED)
form.WindowState = FormWindowState.Maximized;
else
form.WindowState = FormWindowState.Normal;
}
this.WindowState = FormWindowState.Normal;
तुम भी है:
Restore WindowState from Minimized आप जो खोज रहे हैं होना चाहिए:
this.WindowState = FormWindowState.Minimized;
this.WindowState = FormWindowState.Maximized;
आह, मैं सवाल गलत समझा। इसमें कहा गया है कि आप इस तरह टास्कबार व्यवहार की नकल कर सकते हैं:
SendMessage(form.Handle, WM_SYSCOMMAND, SC_RESTORE, 0);
कि उसके सवाल का जवाब नहीं है - वह है कि क्या सामान्य करने के लिए जा सकते हैं या अधिकतम करने के लिए करता है, तो फ़ॉर्म में इस समय कम से कम है पूछ रहा है ... –
मैं अपने जवाब अपडेट किया गया। मैंने सवाल गलत समझा। –
यह एक बहुत साफ समाधान है - कार्यान्वित करने के लिए बहुत आसान है। –
आप जब भी एक परिवर्तन (अधिकतम/कम से कम), तो आपको SizeChanged
घटना में हुक करना होगा है पहले वाली स्थिति स्टोर करने के लिए चाहते हैं, this post on MSDN के अनुसार । आप वहां WindowState
प्राप्त कर सकते हैं और इसे स्टोर कर सकते हैं।
इसे स्वयं संग्रहित करने से बेहतर विकल्प है। यह पहले ही विंडोज एपीआई द्वारा ट्रैक किया गया है। –
आप आकार घटना के माध्यम से खिड़की राज्य परिवर्तनों को ट्रैक कर सकते हैं। इस तरह:
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
prevState = currState = this.WindowState;
}
protected override void OnResize(EventArgs e) {
if (currState != this.WindowState) {
prevState = currState;
currState = this.WindowState;
}
base.OnResize(e);
}
private FormWindowState prevState, currState;
}
- 1. प्रोग्रामेटिक रूप से डब्ल्यूपीएफ फॉर्म
- 2. ड्रूपल प्रोग्रामेटिक रूप से लॉगिन फॉर्म प्रस्तुत करें
- 3. सी # रिपोर्ट प्रोग्रामेटिक रूप से
- 4. प्रोग्रामेटिक रूप से VB.NET
- 5. प्रोग्रामेटिक रूप से अनदेखा करें
- 6. प्रोग्रामेटिक रूप से
- 7. खुले विंडो फ़ोल्डरों को प्रोग्रामेटिक रूप से कम करने के लिए कैसे करें
- 8. Android इंस्टॉल करें apk प्रोग्रामेटिक रूप से
- 9. निर्यात सी # रिपोर्टव्यूवर नियंत्रण प्रोग्रामेटिक रूप से
- 10. जीएसी प्रोग्रामेटिक रूप से
- 11. मैं प्रोग्रामेटिक रूप से विंडोज़ फॉर्म कैसे बना सकता हूं?
- 12. विंडोज प्रोग्रामेटिक रूप से अनलॉक करें
- 13. नेटवर्क इंटरफ़ेस को प्रोग्रामेटिक रूप से अक्षम/सक्षम करें
- 14. प्रोग्रामव्यू को प्रोग्रामेटिक रूप से
- 15. प्रोग्रामेटिक रूप से माउस को
- 16. uitableview प्रोग्रामेटिक रूप से
- 17. रूबिक के घन को प्रोग्रामेटिक रूप से
- 18. प्रोग्रामेटिक रूप से .NET
- 19. प्रोग्रामेटिक रूप से ऑपरेटर निर्दिष्ट करें
- 20. प्रोग्रामेटिक रूप से .NET
- 21. आईआईएस 7 प्रोग्रामेटिक रूप से
- 22. प्रोग्रामेटिक रूप से कच्चे_इनपुट
- 23. एंड्रॉइड प्रोग्रामेटिक रूप से
- 24. प्रोग्रामेटिक रूप से सिम्बियन
- 25. सी # प्रोग्रामेटिक रूप से एएसपी.NET सदस्यता स्कीमा
- 26. सिल्वरलाइट प्रोग्रामेटिक रूप से
- 27. प्रोग्रामेटिक रूप से एंड्रॉइड
- 28. जीमेल प्रोग्रामेटिक रूप से
- 29. प्रोग्रामेटिक रूप से स्वयं को कैसे हटाएं? (सी # विनमोबाइल)
- 30. एनयूनीट प्रोग्रामेटिक रूप से
@ डैन: धन्यवाद - मैंने त्रुटियों को ठीक किया - (मैं फ्लाई पर टाइप कर रहा था, और पिनवोक.net से कॉपी कर रहा था, जिसमें रेफ/आउट समस्या गलत थी ...) –
@Dan: ऐसा लगता है जैसे यह आपके लिए काम करता है, हालांकि , कम से कम ;) –