2012-06-21 19 views
74

मैं wpf के लिए नया हूं। मेरे पास विंडो 1 और विंडो 2 जैसी दो विंडो हैं। मेरे पास विंडो 1 में एक बटन है। अगर मैं उस बटन पर क्लिक करता हूं, तो विंडो 2 को खोलना होगा। इसके लिए मुझे क्या करना चाहिए। कोड जो मैंने कोशिश की थी।wpf में पहली विंडो से दूसरी विंडो कैसे खोलें?

Window2 win2 = new Window2(); 
win2.Show(); 
+4

आपने क्या प्रयास किया है? यह मूल बात है जिसे आप तब तक खोज सकते हैं जब तक कि आपके पास विशिष्ट समस्या न हो, जिसका आपने उल्लेख नहीं किया था। – Reniuz

उत्तर

154

window1 में अपना कोड लिखें।

private void Button_Click(object sender, RoutedEventArgs e) 
{ 
    window2 win2 = new window2(); 
    win2.Show(); 
    this.Close(); 
} 
+0

क्या मैं इस लाइन को विंडो_लोडेड ईवेंट पर लिख सकता हूं? यदि ऐसा है, तो दूसरी विंडो प्रदर्शित नहीं हो रही है। –

+5

किसी भी विंडो लोडिंग ईवेंट में 'this.Close() 'डालना शायद एक अच्छा विचार नहीं है। – StingyJack

2

दूसरी खिड़की मान लिया जाये कि public partial class Window2 : Window के रूप में परिभाषित किया गया है, तो आप इसे ऐसा कर सकते हैं। यह नया क्लिक करें हैंडलर, जहां के अंदर आप कुछ इस तरह लिख सकते हैं पैदा करेगा:

var window2 = new Window2(); 
window2.Show(); 
+0

मैं विंडो 1 से विंडो 2 खोलना चाहता हूं। –

2

आप इस पर window1 में बटन और डबल क्लिक बना सकते हैं:

window2.show(); 
15
private void button1_Click(object sender, RoutedEventArgs e) 
{ 
    window2 win2 = new window2(); 
    win2.Show(); 
} 
25

आप एक नया WPF आवेदन बनाना चाहते हैं। एक बार ऐसा करने के बाद, आपके पास .xaml फ़ाइल और एक .cs फ़ाइल होनी चाहिए। ये आपकी मुख्य खिड़की का प्रतिनिधित्व करते हैं। अपनी उप विंडो का प्रतिनिधित्व करने के लिए एक अतिरिक्त .xaml फ़ाइल और .cs फ़ाइल बनाएं।

MainWindow.xaml

<Window x:Class="WpfApplication2.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="MainWindow" Height="350" Width="525"> 
    <Grid> 
     <Button Content="Open Window" Click="ButtonClicked" Height="25" HorizontalAlignment="Left" Margin="379,264,0,0" Name="button1" VerticalAlignment="Top" Width="100" /> 
    </Grid> 
</Window> 

MainWindow.xaml.cs

public partial class MainWindow : Window 
{ 
    public MainWindow() 
    { 
     InitializeComponent();    
    } 

    private void ButtonClicked(object sender, RoutedEventArgs e) 
    { 
     SubWindow subWindow = new SubWindow(); 
     subWindow.Show(); 
    } 
} 

फिर जो कुछ भी अतिरिक्त कोड आप इन कक्षाओं की जरूरत जोड़ें:

SubWindow.xaml SubWindow.xaml.cs

+7

काफी आसान! मुझे डब्ल्यूपीएफ से नफरत है, यह सिर्फ बेकार जटिल है और काउंटर intutive होने के लिए डिज़ाइन किया गया है। –

+13

इसके अलावा यह गलत है। आपको एक नए पूरे आवेदन की आवश्यकता नहीं है। बस एक नई खिड़की। –

5

डब्ल्यूपीएफ में हमारे पास शो() और ShowDialog() विधि का उपयोग करके कुछ विकल्प हैं। दिखाएँ खैर अगर आप खोला विंडो को बंद करने के लिए जब नई विंडो खुली हो जाता है चाहता हूँ तो आप उपयोग कर सकते हैं() विधि

Window1 win1 = new Window1(); 
win1.Show(); 
win1.Close(); 

ShowDialog() भी एक विंडो खोलता है लेकिन इस मामले में आप अपने पहले से खोला विंडो को बंद नहीं कर सकते।

1

आप इस कोड का उपयोग कर सकते हैं, आशा है आप

private void OnClickNavigate(object sender, RoutedEventArgs e) 
    { 
     NavigatedWindow navigatesWindow = new NavigatedWindow(); 
     navigatesWindow.ShowDialog(); 

    } 

धन्यवाद :)

2

मदद करने के लिए तुम इतनी तरह एक नई विंडो का एक उदाहरण बनाने की आवश्यकता होगी।

var window2 = new Window2(); 

एक बार जब आप उदाहरण है कि तुम क्या आप क्या करना चाहते हैं पर निर्भर करता Show() या ShowDialog() विधि का उपयोग कर सकते हैं।

window2.Show(); 

या

var result = window2.ShowDialog(); 

ShowDialog() एक Nullable<bool> वापसी अगर आपको लगता है कि आवश्यकता होगी।

4

इससे मेरी मदद मिली: मालिक विधि मूल रूप से विंडो को अन्य विंडो में जोड़ती है यदि आप उसी के साथ अतिरिक्त विंडो चाहते हैं।

LoadingScreen lc = new LoadingScreen(); 
lc.Owner = this; 
lc.Show(); 

इस पर भी विचार करें।

this.WindowState = WindowState.Normal; 
this.Activate(); 
संबंधित मुद्दे