क्यों FindName() निम्न उदाहरण में शून्य क्यों देता है?मैं FindName() के नाम से टेक्स्टबॉक्स का उपयोग क्यों नहीं कर सकता?
XAML:
<Window x:Class="TestDynamicTextBox343.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300">
<StackPanel>
<Border >
<DockPanel x:Name="FormBase" LastChildFill="True">
</DockPanel>
</Border>
<Button Content="Save" Click="Button_Click"/>
</StackPanel>
</Window>
पीछे कोड:
using System;
using System.Windows;
using System.Windows.Controls;
namespace TestDynamicTextBox343
{
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
StackPanel sp = new StackPanel();
sp.Orientation = Orientation.Horizontal;
TextBlock textBlock = new TextBlock();
textBlock.Text = "First Name: ";
TextBox textBox = new TextBox();
textBox.Name = "FirstName";
textBox.Text = "test";
sp.Children.Add(textBlock);
sp.Children.Add(textBox);
FormBase.Children.Add(sp);
}
private void Button_Click(object sender, RoutedEventArgs e)
{
TextBox tb = (TextBox)this.FindName("FirstName");
Console.WriteLine(tb.Text);
}
}
}
परिशिष्ट उत्तर करने के लिए:
धन्यवाद एक बहुत, ब्रूनो, कि अच्छी तरह से काम किया। एक ही नाम के दो बार जोड़ने के लिए नहीं आदेश में, मैं इसे इस के साथ रैप:
void RegisterTextBox(string textBoxName, TextBox textBox)
{
if ((TextBox)this.FindName(textBoxName) != null)
this.UnregisterName(textBoxName);
this.RegisterName(textBoxName, textBox);
}
या आप बक्सें के अलावा और कुछ दर्ज की हो जाएगा अगर, एक जेनेरिक संस्करण:
void RegisterControl<T>(string textBoxName, T textBox)
{
if ((T)this.FindName(textBoxName) != null)
this.UnregisterName(textBoxName);
this.RegisterName(textBoxName, textBox);
}
मुझे नहीं मिला कि मुझे उन सभी नामों को पंजीकृत करना चाहिए जिन्हें मैं FindName() फ़ंक्शन के साथ ढूंढना चाहता हूं। क्या मैं? –
@LorenzoSciuto केवल वही जिन्हें आप चाहते हैं, और विशेष रूप से उन लोगों को जिन्हें एनीमेशन द्वारा लक्षित किया जाएगा। – Sabuncu