الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيف لي ان احفظ تغييرات شاشة متعلقة باخرى

بدأه ..ريـومة.. في 6 مارس 2013 · 7 رد · 879 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع


السلام عليكم ورحمة الله وبركاته

بداية


 برنامجي في بيئة الـ WPF

و لدي شاشة رئيسية  (  SpaceWorld   )  بها عدة buttons
كل زر يؤدي لفتح شاشة منفصلة

والنقطة هنا انني اريد عند الانتهاء من  الـ  Storyboard


الموجودة في الشاشات الفرعية  ان يتم الرجوع للشاشة الرئيسية (   SpaceWorld  ) ولكن بجعل زر تلك الشاشة غير مفعل
Visibility = Visibility.Hidden;


وهكذا لكل الازرار الموجودة في الشاشة الرئيسية عند عملية فتح كل زر منها

مثل عملية Refresh  للصفحة لتطبيق التغيرات

 

  private void Storyboard_Completed(object sender, EventArgs e)
         {


            

             
             SpaceWorld s1 = new SpaceWorld();


            

 
            

             WindowInteropHelper helper = new WindowInteropHelper(s1);
             helper.Owner = new WindowInteropHelper(this).Handle;
             s1.q1.Visibility = Visibility.Hidden;
             
        s1.Show();

             
             
          


         }

 



باختصار كيف لي ان احفظ تغييرات شاشة متعلقة باخرى او جعل التغييرات global

لانه بمجرد ان يحتفظ باول تغيير يعود من جديد :(

 

 

وجزاكم الله خيرا ...
 

#2

أليس هناك من حل ؟؟

 

:(

#3

؟؟

#4

سأقول لك طريقتي في برمجة تطبيق متعدد النوافذ

 

الويندوز الرئيسية والتي تفتح مع تشغيل التطبيق وبإغلاقها يتم إغلاق التطبيق

بالنسبة للنوافذ الفرعية هي عبارة عن صفحات Pages

أقسم النافذة الرئيسية إلى سطرين سطر بارتفاع صغير لاحتواء صف الأزرار

السطر السفلي هو لفتح الصفحات

أقوم بإدراج عناصر Frame بعدد الصفحات بحيث اجعل كل فريم يحتوي صفحة أي أضع في خاصية Source  لكل فريم مسار الصفحة المقابلة

أقوم بجعل خاصية Visibility لكل الفريمز Hiddin  وليس Collapse

 لإن الفرق بينهما أن الأولى تخفي الواجهة على الشاشة فقط ولكن تعالجها وتبقي مكانها محجوزا أما الثانية فتعتبرها وكأنها غير موجودة من الأصل

والسبب أننا نريد إبقائها في الذاكرة حتى لا نفقد القيم

الآن أعمل ميثود لإظهار صفحة ما بحيث يستقبل بارمتر يعبر عن الشاشة بحيث يقوم بإظهار الفريم ويخفي البقية

طبعا أنا أعمل على مبدأ الويندوز 8 أو الهواتف الذكية بمعنى التعامل يكون مع شاشة واحدة تملء الشاشة وليس على مبدأ النوافذ المتعددة مثل تطبيقات الويندوز التقليدية

 

أما استعمال فريم واحد وتبديل المسار فقط لا ينفع لأنه بمجرد تغيير مسار الصفحة سينشأها من جديد ويلغي السابقة

وهذا ما يحصل معك

تم تعديل هذه المشاركة بواسطة أبو أحمد المبرمج في 11 مارس 2013 في 23:52

ما أقبـح المعصية ، تذهب لذتها ويبقى إثمها ... ومأ أحسن الطاعة ، تذهب مشقتها ويبقى ثوابها

كل نعيم دون الجنة غرور ... وكـل شقـاء دون النـار سرور

الدورة التطبيقية لتعليم التصميم بالإليستريتور

#5

جزاك الله خيرا استاذي  وشكرا على ردك

 

بالنسبة لهذه النقطتين لم افهمها جيدا

 

* أقسم النافذة الرئيسية إلى سطرين سطر بارتفاع صغير لاحتواء صف الأزرار

* أقوم بإدراج عناصر Frame بعدد الصفحات بحيث اجعل كل فريم يحتوي صفحة أي أضع في خاصية Source  لكل فريم مسار الصفحة المقابلة

 

كيف استطيع تقسيم النافذة الرئيسية؟

#6

باستخدام Containers  كالــ Panel !

No intellectual battle was ever won through retreat
You do not watch Gintama? Dude, you are missing a lot!


صورةmsrgb1485.gif ocajavase7programmerclr.gif

#7

كيف ستساعدني الـ panel  لعمل ما احتاجه؟

#8

أقصد تقسيم الـ Grid إلى أسطر

 

    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="38"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>
        <StackPanel Orientation="Horizontal">
            <Button Content="Page1" HorizontalAlignment="Left" Padding="5,1" Margin="5" Click="Button_Click_1"/>
            <Button Content="Page2" HorizontalAlignment="Left" Padding="5,1" Margin="5" Click="Button_Click_2"/>
            <Button Content="Page3" HorizontalAlignment="Left" Padding="5,1" Margin="5" Click="Button_Click_3"/>
        </StackPanel>
        <Grid Grid.Row="1">
            <Frame x:Name="frmPage3" Source="/WPFMultiPage01;component/Pages/Page3.xaml" NavigationUIVisibility="Hidden" />
            <Frame x:Name="frmPage2" Source="/WPFMultiPage01;component/Pages/Page2.xaml" NavigationUIVisibility="Hidden" />
            <Frame x:Name="frmPage1" Source="/WPFMultiPage01;component/Pages/Page1.xaml" NavigationUIVisibility="Hidden" />
        </Grid>
    </Grid>
 

عادة أنا استخدم نمط MVVM  ولكن في المثال استخدمت الأحداث المباشرة للتبسيط والتركيز على الفكرة

 

    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            ShowPages(PagesName.Page1);
        }

        private void Button_Click_1(object sender, RoutedEventArgs e)
        {
            ShowPages(PagesName.Page1);
        }

        private void Button_Click_2(object sender, RoutedEventArgs e)
        {
            ShowPages(PagesName.Page2);
        }

        private void Button_Click_3(object sender, RoutedEventArgs e)
        {
            ShowPages(PagesName.Page3);
        }


        private void HideAllPages()
        {
            frmPage1.Visibility = Visibility.Hidden;
            frmPage2.Visibility = Visibility.Hidden;
            frmPage3.Visibility = Visibility.Hidden;
        }



        private void ShowPages(PagesName Page)
        {
            HideAllPages();
            switch (Page)
            {
                case PagesName.Page1:
                    frmPage1.Visibility = Visibility.Visible;
                    break;
                case PagesName.Page2:
                    frmPage2.Visibility = Visibility.Visible;
                    break;
                case PagesName.Page3:
                    frmPage3.Visibility = Visibility.Visible;
                    break;
                default:
                    break;
            }
        }

 

طبعا عرفّت تعداد للصفحات لتسهيل وتنظيم التحكم بها بدلا من استخدام أسماء مباشرة

 

    public enum PagesName
    {
        Page1,
        Page2,
        Page3,
    }
 

على كل حال قمت بعمل مثال يوضح الفكرة

 

WPFMultiPage01.rar

تم تعديل هذه المشاركة بواسطة أبو أحمد المبرمج في 12 مارس 2013 في 08:01

ما أقبـح المعصية ، تذهب لذتها ويبقى إثمها ... ومأ أحسن الطاعة ، تذهب مشقتها ويبقى ثوابها

كل نعيم دون الجنة غرور ... وكـل شقـاء دون النـار سرور

الدورة التطبيقية لتعليم التصميم بالإليستريتور

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…