2013-08-02 4 views
5

कहता है कि मैंने कई टेक्स्टबॉक्स जोड़े हैं। सभी टेक्स्टबॉक्स के माध्यम से पुनरावृत्ति या लूप कैसे करें और कुछ जांच करें। जांचें कि प्रत्येक टेक्स्टबॉक्स की सामग्री एक संख्या है या नहीं।वर्तमान पृष्ठ पर सभी टेक्स्टबॉक्स को पुन: सक्रिय कैसे करें

नीचे WinForm के लिए कोड है, WinRT में कैसे करें?

foreach (Control item in GroupBox1.Controls) 
{ 

    if (item.GetType() == typeof(TextBox)) 
    { 
     if (string.IsNullOrEmpty(((TextBox)item).Text)) 
     { 
      //Empty text in this box 
     } 
    } 
} 

धन्यवाद।

+0

सही उत्तर को चिह्नित करने के लिए इसे विनम्र माना जाता है। –

उत्तर

1

आप ऐसा कर सकते हैं। प्रत्येक पृष्ठ में UIElements का कंटेनर होगा, इसलिए मैं Grid का उपयोग कर रहा हूं। आप StackPanel के साथ भी ऐसा ही कर सकते हैं। मैं अपने बच्चों के माध्यम से उत्साहित हूं और यह जांच रहा हूं कि यह Textbox है या नहीं।

XAML

<Grid x:Name="rootGrid" Background="{StaticResource ApplicationPageBackgroundThemeBrush}"> 
    <TextBox Height="51" Margin="210,103,0,0" Text="TextBox" Width="135"/> 
    <TextBox Height="51" Margin="459,149,0,0" Text="TextBox" Width="135"/> 
    <TextBox Height="51" Margin="277,279,0,0" Text="TextBox" Width="135"/> 
    <TextBox Height="51" Margin="580,279,0,0" Text="TextBox" Width="135"/> 
    <TextBlock Height="63" Margin="227,494,0,0" Text="TextBlock" Width="142"/> 
    <TextBlock Height="63" Margin="479,469,0,0" Text="TextBlock" Width="142"/> 
    <TextBlock Height="63" Margin="573,406,0,0" Text="TextBlock" Width="142"/> 
    <TextBlock Height="63" Margin="143,352,0,0" Text="TextBlock" Width="142"/> 
    <CheckBox Content="CheckBox" Height="81" Margin="1064,203,0,0" Width="130"/> 
    <CheckBox Content="CheckBox" Height="81" Margin="713,119,0,0" Width="130"/> 
    <CheckBox Content="CheckBox" Height="81" Margin="831,352,0,0" Width="130"/> 
</Grid> 

सी #

protected override void OnNavigatedTo(NavigationEventArgs e) 
{ 
    foreach (var child in rootGrid.Children) 
    { 
     if (child is TextBox) 
     { 
      System.Diagnostics.Debug.WriteLine(((TextBox)child).Text); 
      if (string.IsNullOrEmpty(((TextBox)child).Text)) 
      { 
       //Empty text in this box 
      } 
     } 
    } 
} 
+0

धन्यवाद। लेकिन अगर मेरे पास कंटेनर हैं जैसे: ग्रिड कंट्रोल में 3 स्टैक नियंत्रण होते हैं और प्रत्येक स्टैक कंट्रोल में कुछ टेक्स्टबॉक्स होते हैं। इस तरह की संरचना को फिर से कैसे करें? धन्यवाद – MilkBottle

+0

मुझे अपनी कंटेनर संरचना दें, मैं इसके लिए समाधान पोस्ट करूंगा। – Xyroid

+0

नहीं, यह नहीं करेगा। यह केवल एक कंटेनर के बच्चों को ही मिलेगा, आपको इसे रिकर्सिव बनाने की आवश्यकता है। मैं समाधान के साथ जवाब दूंगा ताकि आप देख सकें कि मेरा क्या मतलब है। –

3

इस तरह आप आप क्या चाहते हैं करते हैं।

public MainPage() 
{ 
    this.InitializeComponent(); 
    Loaded += MainPage_Loaded; 
} 

void MainPage_Loaded(object sender, RoutedEventArgs e) 
{ 
    foreach (var textBox in AllTextBoxes(this)) 
    { 
     textBox.Text = "Hello world"; 
    } 
} 

List<TextBox> AllTextBoxes(DependencyObject parent) 
{ 
    var list = new List<TextBox>(); 
    for (int i = 0; i < VisualTreeHelper.GetChildrenCount(parent); i++) 
    { 
     var child = VisualTreeHelper.GetChild(parent, i); 
     if (child is TextBox) 
      list.Add(child as TextBox); 
     list.AddRange(AllTextBoxes(child)); 
    } 
    return list; 
} 

संदर्भ: http://blog.jerrynixon.com/2012/09/how-to-access-named-control-inside-xaml.html

बेस्ट ऑफ लक!

1

में asp.net ग # // अगर आप

foreach (Control ctrl in Page.Controls) 
    { 
     if (ctrl is TextBox) 
     { 

      ((TextBox)ctrl).Text = string.Empty; 
     } 
    } 

/masterpage नहीं किया है अगर आप मास्टर पृष्ठ तो Page.Form.FindControl ("ContentPlaceHolder1 में/

foreach (नियंत्रण आइटम ")। नियंत्रण) { यदि (आइटम टेक्स्टबॉक्स है) { ((टेक्स्टबॉक्स) आइटम) .Text = string.Empty; } }

+0

आप masterpage अगर तुलना इस एक: यदि आप मास्टर पृष्ठ है तो foreach (। Page.Form.FindControl ("ContentPlaceHolder1") नियंत्रण में नियंत्रण आइटम) { अगर (मद है पाठ बॉक्स) { ((टेक्स्टबॉक्स) आइटम) .Text = string.Empty; } } –

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