আপনি প্রয়োজন হবে না কোন এই অন্যান্য অভিনব উত্তর। নীচে একটি সরল উদাহরণ সব নেই যে Margin
, Height
, Width
XAML সেট বৈশিষ্ট্য, কিন্তু এই মৌলিক পর্যায়ে শেষ করার জন্য কিভাবে দেখানোর জন্য যথেষ্ট হওয়া উচিত।
এক্সএএমএল
একটি Window
পৃষ্ঠা তৈরি করুন যা আপনি সাধারণত পছন্দ করেন এবং এতে আপনার ক্ষেত্রগুলি যুক্ত করুন, বলুন Label
এবং এর মধ্যে একটি TextBox
নিয়ন্ত্রণ করুন StackPanel
:
<StackPanel Orientation="Horizontal">
<Label Name="lblUser" Content="User Name:" />
<TextBox Name="txtUser" />
</StackPanel>
তারপরে Button
সাবমিশনের জন্য একটি স্ট্যান্ডার্ড তৈরি করুন ("ঠিক আছে" বা "জমা দিন") এবং আপনি যদি চান তবে "বাতিল" বোতামটি তৈরি করুন:
<StackPanel Orientation="Horizontal">
<Button Name="btnSubmit" Click="btnSubmit_Click" Content="Submit" />
<Button Name="btnCancel" Click="btnCancel_Click" Content="Cancel" />
</StackPanel>
কোড-পিছনে
আপনি কোড-পিছনেClick
ইভেন্ট হ্যান্ডলার ফাংশন যুক্ত করবেন, তবে আপনি যখন সেখানে যাবেন, প্রথমে একটি সর্বজনীন ভেরিয়েবল ঘোষণা করুন যেখানে আপনি আপনার পাঠ্যবাক্সের মানটি সংরক্ষণ করবেন:
public static string strUserName = String.Empty;
তারপরে, ইভেন্ট হ্যান্ডলার ফাংশনগুলির জন্য ( Click
এক্সএএমএল বোতামের ফাংশনটিতে ডান ক্লিক করুন , "যান সংজ্ঞাতে যান" নির্বাচন করুন এটি এটি আপনার জন্য তৈরি করবে), আপনার বাক্সটি খালি আছে কিনা তা দেখার জন্য আপনার একটি চেক দরকার। আপনি যদি এটি পরিবর্তনশীল না হয় তবে এটি সংরক্ষণ করুন এবং আপনার উইন্ডোটি বন্ধ করুন:
private void btnSubmit_Click(object sender, RoutedEventArgs e)
{
if (!String.IsNullOrEmpty(txtUser.Text))
{
strUserName = txtUser.Text;
this.Close();
}
else
MessageBox.Show("Must provide a user name in the textbox.");
}
অন্য পৃষ্ঠা থেকে এটিকে কল করা
আপনি ভাবছেন, আমি যদি আমার উইন্ডোটি this.Close()
সেখানে দিয়ে বন্ধ করি তবে আমার মান চলে গেছে, তাই না? না !! আমি এটি অন্য সাইট থেকে খুঁজে পেয়েছি: http://www.dreamincode.net/forums/topic/359208-wpf-how-to-make-simple-popup-window-for-input/
কীভাবে আপনাকে Window
অন্যের কাছ থেকে খুলতে হবে এবং মানগুলি পুনরুদ্ধার করতে হবে তার এটির (আমি এটি কিছুটা পরিষ্কার করেছি) এর অনুরূপ উদাহরণ ছিল :
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void btnOpenPopup_Click(object sender, RoutedEventArgs e)
{
MyPopupWindow popup = new MyPopupWindow(); // this is the class of your other page
//ShowDialog means you can't focus the parent window, only the popup
popup.ShowDialog(); //execution will block here in this method until the popup closes
string result = popup.strUserName;
UserNameTextBlock.Text = result; // should show what was input on the other page
}
}
বোতামটি বাতিল
আপনি ভাবছেন, তবে সেই বাতিল বোতামটির কী হবে, তবে? সুতরাং আমরা কেবল আমাদের পপ-আপ উইন্ডো কোড-পিছনে আরেকটি পাবলিক ভেরিয়েবল যুক্ত করব:
public static bool cancelled = false;
এবং আসুন আমাদের btnCancel_Click
ইভেন্ট হ্যান্ডলারটি অন্তর্ভুক্ত করা যাক এবং এতে একটি পরিবর্তন আনুন btnSubmit_Click
:
private void btnCancel_Click(object sender, RoutedEventArgs e)
{
cancelled = true;
strUserName = String.Empty;
this.Close();
}
private void btnSubmit_Click(object sender, RoutedEventArgs e)
{
if (!String.IsNullOrEmpty(txtUser.Text))
{
strUserName = txtUser.Text;
cancelled = false; // <-- I add this in here, just in case
this.Close();
}
else
MessageBox.Show("Must provide a user name in the textbox.");
}
এবং তারপরে আমরা আমাদের MainWindow
btnOpenPopup_Click
ইভেন্টে কেবল সেই পরিবর্তনশীলটি পড়ি :
private void btnOpenPopup_Click(object sender, RoutedEventArgs e)
{
MyPopupWindow popup = new MyPopupWindow(); // this is the class of your other page
//ShowDialog means you can't focus the parent window, only the popup
popup.ShowDialog(); //execution will block here in this method until the popup closes
// **Here we find out if we cancelled or not**
if (popup.cancelled == true)
return;
else
{
string result = popup.strUserName;
UserNameTextBlock.Text = result; // should show what was input on the other page
}
}
দীর্ঘ প্রতিক্রিয়া, তবে আমি এটি দেখতে চেয়েছিলাম যে এটি public static
ভেরিয়েবলগুলি কীভাবে ব্যবহার করছে । না DialogResult
, কোনও ফেরতের মান নেই, কিছুই নেই। কেবল উইন্ডোটি খুলুন, পপ-আপ উইন্ডোতে বোতামের ইভেন্টগুলি সহ আপনার মানগুলি সংরক্ষণ করুন, তারপরে মূল উইন্ডো ফাংশনে এগুলি পুনরুদ্ধার করুন।