0
شناسایی یک کنترل در فرم دیگر در wpf
با عرض سلام،ادب و احترام
من برنامه ای نوشتم که نام کاربری و کلمه عبور را از کاربر می گیرد و در صورت صحت آن ها، وارد پنجره اصلی برنامه می شود.من می خواهم وقتی کاربر وارد برنامه شد،نام کاربری او در پنجره اصلی برنامه نشان داده شود.من می خواهم این کار را در wpf انجام دهم نه ویندوز فرم!
ممنون می شوم که راهنمایی ام نمایید
تشکر
1 پاسخ
1
سلام و عرض ادب، شما دو راهکار دارید که یکی اصولی و یکی غیر اصولی هست. راهکاری غیر اصولی اینه که شما یک خصوصیت در فرم دوم ایجاد کنید و از فرم اول مقدارش رو ست کنید:
namespace WpfApp2 { /// <summary> /// Interaction logic for Form2.xaml /// </summary> public partial class Form2 : Window { public string Username { get; set; } public Form2() { InitializeComponent(); } private void Window_Loaded(object sender, RoutedEventArgs e) { UsernameLabel.Content = Username; } } }
کد مربوط به فرم ورود:
namespace WpfApp2 { /// <summary> /// Interaction logic for MainWindow.xaml /// </summary> public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } private void Button_Click(object sender, RoutedEventArgs e) { if(UsernameTextBox.Text == "ITPro") { Form2 form = new Form2(); form.Username = UsernameTextBox.Text; form.Show(); this.Close(); } } } }
راهکار دوم ست کردن Principal در Thread جاری برنامه هست، کد بالا به صورت زیر تغییر میکنه:
private void Button_Click(object sender, RoutedEventArgs e) { if(UsernameTextBox.Text == "ITPro") { System.Threading.Thread.CurrentPrincipal = new System.Security.Principal.GenericPrincipal(new System.Security.Principal.GenericIdentity(UsernameTextBox.Text), new[] { "" }); Form2 form = new Form2(); form.Show(); this.Close(); } }
و دسترسی به نام کاربری از فرم دوم:
private void Window_Loaded(object sender, RoutedEventArgs e) { UsernameLabel.Content = System.Threading.Thread.CurrentPrincipal.Identity.Name; }
با استفاده از روش دوم، تو تمام قسمت های برنامه به نام کاربری که وارد برنامه شده دسترسی دارید.