मैं सोच रहा हूं कि मैं एक विंडो से दूसरी विंडो में मूल्य कैसे भेज सकता हूं, मूल रूप से कॉलर विंडो पर मैं कुछ गणना करता हूं और मैं इसे दूसरी विंडो पर भेजना चाहता हूं जो उस राशि को प्रदर्शित करेगा जो मैंने पिछली विंडो पर गणना की थी ..
मैंने जो कल्पना की थी, लेकिन मुझे नहीं पता कि सबसे अच्छा तरीका अगला है: मैंने दूसरी विंडो पर संपत्ति बनाई जो सूचनाओं को प्रदर्शित करेगी और इसे पहली विंडो से एक मान देगी, जैसे:
// कॉलर विंडो - मुख्य विंडो
private void btnTest_Click(object sender, System.Windows.RoutedEventArgs e)
{
double sum = 0;
foreach (var item in myGrid)
{
sum += Convert.ToDouble(item.TotalAmount);
}
TestWindow change = new TestWindow();
change.Total = Convert.ToDecimal(sum);
change.ShowDialog();
}
टेस्टविंडो (दूसरी विंडो जो पिछले डिस्प्ले से योग प्रदर्शित करना चाहिए)
public partial class TestWindow : Window
{
public decimal Total;
public TestWindow()
{
InitializeComponent();
txtDisplayAmount.Text = Total.ToString();
}
private void btnClose_Click(object sender, System.Windows.RoutedEventArgs e)
{
this.Close();
// TODO: Add event handler implementation here.
}
}
लेकिन यह हमेशा एक शून्य प्रदर्शित करता है!
3 जवाब
जब आप इसे बनाते हैं तो आप विंडो को मान पास कर सकते हैं:
मेनविंडो:
TestWindow change = new TestWindow(Convert.ToDecimal(sum));
change.ShowDialog();
टेस्टविंडो:
public TestWindow(decimal total)
{
InitializeComponent();
txtDisplayAmount.Text = total.ToString();
}
यदि आप बाद में मूल्य बदलने का इरादा रखते हैं, तो आप एक संपत्ति का उपयोग कर सकते हैं, लेकिन फिर आपको यह सुनिश्चित करना चाहिए कि जब भी संपत्ति सेट की जाती है तो TextBox
अपडेट हो जाता है:
public partial class TestWindow : Window
{
public decimal Total
{
get
{
if (string.IsNullOrEmpty(txtDisplayAmount))
return 0M;
decimal d;
decimal.TryParse(txtDisplayAmount.Text, out d);
return d;
}
set { txtDisplayAmount.Text = value.ToString(); }
}
public TestWindow()
{
InitializeComponent();
}
private void btnClose_Click(object sender, System.Windows.RoutedEventArgs e)
{
this.Close();
}
}
किसी मान को सीधे 1 रूप से दूसरे रूप में पास करना या विभिन्न रूपों के बीच मानों को बदलना वास्तव में संभव है।
अपनी मुख्य विंडो में इन परिवर्तनों का प्रयास करें:
public double sum = 0; /// it's important to declare the public variable outside of the click event. use the event only to change it's value.
private void btnTest_Click(object sender, System.Windows.RoutedEventArgs e)
{
foreach (var item in myGrid)
{
sum += Convert.ToDouble(item.TotalAmount);
}
TestWindow change = new TestWindow();
change.Total = Convert.ToDecimal(sum);
change.ShowDialog();
}
अब अपनी टेस्ट विंडो में इस कोड को आजमाएं:
public partial class TestWindow : Window
{
public decimal Total;
public TestWindow()
{
InitializeComponent();
txtDisplayAmount.Text = ((MainWindow)Application.Current.MainWindow).sum.ToString();
}
private void btnClose_Click(object sender, System.Windows.RoutedEventArgs e)
{
this.Close();
// TODO: Add event handler implementation here.
}
}
ऐसा इसलिए है क्योंकि जब TestWindow का कंस्ट्रक्टर लॉन्च किया जाता है, तो TestWindow की कुल संपत्ति शून्य होती है। कन्स्ट्रक्टर में value के तर्क में पास करें और इसे वहां असाइन करें।
नए सवाल
c#
C # (उच्चारण "तेज देखें") Microsoft द्वारा विकसित एक उच्च स्तरीय, सांख्यिकीय रूप से टाइप किया हुआ, बहु-प्रतिमान प्रोग्रामिंग भाषा है। C # कोड आमतौर पर Microsoft के .NET परिवार के टूल और रन-टाइम को लक्षित करता है, जिसमें .NET फ्रेमवर्क, .NET कोर और Xamarin अन्य शामिल हैं। C # या C # के औपचारिक विनिर्देश में लिखे गए कोड के बारे में प्रश्नों के लिए इस टैग का उपयोग करें।