2011-05-26 20 views
6

मैं अपने परिभाषित हैंडल पर सेट किए गए पैरेंट के साथ C# विंडो का उपयोग करना चाहता हूं, यह एक अन्य प्रक्रिया विंडो हैंडल है।सी # विंडो बनाना - माता-पिता विंडो को परिभाषित करना

कोई भी यह कैसे जानता है?

नमस्ते,

उत्तर

7

अगर मैं अपने प्रश्न समझ में आ सही ढंग से आप को प्राप्त करने के कुछ इस तरह का उपयोग करके आप क्या चाहते हैं सक्षम होना चाहिए:

class Win32Window : IWin32Window 
{ 
    IntPtr handle; 

    public Win32Window(IntPtr handle) { this.handle = handle; } 

    public IntPtr Handle 
    { 
     get { return this.handle; } 
    } 
} 

static void Main() 
{ 
    IntPtr targetParent = // Get handle to the parent window 

    new MainForm().ShowDialog(new Win32Window(targetParent)); 
} 

यह MainForm हो जाएगा निर्दिष्ट खिड़की बनाने का एक बच्चा खिड़की यह हमेशा इसके ऊपर दिखाई देता है। उदाहरण के लिए मैं ShowDialog का उपयोग करता हूं, लेकिन यह Show के लिए भी काम करना चाहिए। यह विंडोज फॉर्म के लिए विशिष्ट है।

WPF में आप यह कर सकते:

var helper = new WindowInteropHelper(/* your Window instance */); 

helper.Owner = // Set with handle for the parent 

मैं जल्दी से WPF खिड़की दिखा के बाद यह कोशिश की है और यह अपेक्षा के अनुरूप काम करने के लिए लग रहा था, लेकिन WPF ज्ञान है कि महान नहीं है।

+0

ठीक है, मैं इसे आजमाउंगा, लेकिन .. यह विंडो वर्ग के लिए असंभव है? मेरे पास XAML के साथ विंडो पर आधारित कोड पहले से ही है। – Svisstack

+0

मैंने विंडोज फॉर्म ग्रहण किया, इसलिए यह एक WPF विंडो के लिए लागू नहीं होगा। –

+0

मैंने WPF में संभावित समाधान के साथ उत्तर अपडेट किया, लेकिन मैं कोई गारंटी नहीं देता ... :) –

3

मेरा मानना ​​है कि हैंडल केवल पढ़ने के लिए ही होगा; इसलिए, .Parent संपत्ति केवल पढ़ने के लिए है। हालांकि, .Owner संपत्ति में गेटर और एक सेटर (ref. MSDN) है ... हालांकि, आपके पास अभिभावक विंडो का संदर्भ होना चाहिए।

अधिक जानकारी के बिना, मैं उससे अधिक प्रदान नहीं कर पाऊंगा।

यदि आपका मूल उम्मीदवार अप्रबंधित विंडो है, तो यह link देखें।

संबंधित मुद्दे