نمایش نتایج 1 تا 1 از 1

نام تاپیک: اصلاح عدم نمایش Taskbar ویندوز در حالت ماکزیماز شدن هنگامی که برای ویندوز استایل تعریف شده باشد

  1. #1
    VIP آواتار مهدی فرزاد
    تاریخ عضویت
    اردیبهشت 1403
    محل زندگی
    اهواز
    سن
    43
    پست
    1,154

    Thumbs up اصلاح عدم نمایش Taskbar ویندوز در حالت ماکزیماز شدن هنگامی که برای ویندوز استایل تعریف شده باشد

    سلام
    همانطور که میدونید وقتی برای ویندوز استایل تعریف میکینم در حالت ماکزیماز تسک بار ویندوز نمایش داده نمیشه و این مشکل خیلی از دوستان بوده که هم در همین تالار و هم از طریق ایمیل مطرح کردند
    من این مشکل رو به شکل زیر در استایل برنامه حل کردم و با این روش دیگه اصلا نیاز نیست برای هر پنجره از برنامه مجدد کد بنویسید و این حالت در خود استایل برنامه حل میشود

    برای مثال هم همان استایل ویندوز 7 رو که هم در آموزشهام و هم در چند پست دیگه گذاشته بودم مجدد با اصلاح این مورد قرار میدم

    روش کار به این شکل هست که شما برای استایل برنامه یک کلاس برای مدیریت اون دارید(اگر قبلا نداشتید درست می کنید همان گونه که در استایل قبلی من بود)
    در مثال ما این کلاس با نام WindowManager هست (شما برای کار کردن دکمه های استایل به اون نیاز دارید برای اطلاعات بیشتر به آموزش نهم من مراجعه کنید)

    در این کلاس متد زیر رو اضافه می کنید

    using WinInterop = System.Windows.Interop;
    using System.Runtime.InteropServices;

    WindowState state = WindowState.Normal;

    void Load(object sender, EventArgs e)
    {
    Window window = sender asWindow;
    if (window != null)
    {
    state = window.WindowState;
    System.IntPtr handle = (new WinInterop.WindowInteropHelper(window)).Handle;
    WinInterop.HwndSource.FromHwnd(handle).AddHook(new WinInterop.HwndSourceHook(WindowProc));
    window.WindowState = WindowState.Normal;
    window.WindowState = state;
    }
    }
    همچنین مجموعه کد های که من در یک فایل txt به نام code ضمیمه کردم (چون تعداد کارکتر ها زیاد میشد مجبور شدم ضمیمه کنم)تمام این ها رو هم به کلاس اضافه کنید
    حالا در کد های Xaml مربوط به استایل برنامه اگر کلاس رو معرفی نکردید ابتدا به شکل زیر معرفی می کنید
      x:Class="MyWin.WindowManager"

    Mywin نام namespace من هست
    حالا باید این تکه کد قرمز رنگ رو به استایل اضافه کنید

    <Stylex:Key="Window7Skin1" TargetType="{x:Type Window}">
    <Setter Property="WindowStyle" Value="None"/>
    <Setter Property="Background" Value="Transparent"/>
    <Setter Property="FontFamily" Value="Tahoma"/>
    <Setter Property="FontSize"Value="10"/>
    <Setter Property="FontWeight" Value="Normal"/>
    <EventSetter Event="Loaded" Handler="Load"/>


    تا اینجا دیگه کار تمام هست فقط یک نکته اینکه برای نمایش زیبا نر ویندوز در حالت ماکزیماز در کد های استایل برنامه بهتر است تنظیمات رو به گونه ای انجام دهید که وقتی وندوز ماکزیماز شده اگر Border برای استایل تعریف کردیدیا گوشه های فرم گرد است Border رو بردارید و گوشه ها را تیز کنید
    مثلا در استایل من به این شکل عمل شده
     <Trigger Property="WindowState" Value="Maximized">
    <Setter TargetName="MaxButton" Property="Tag" Value="Restore"/>
    <Setter Property="BorderThickness" TargetName="border" Value="0"/>
    <Setter Property="CornerRadius" TargetName="border" Value="0"/>
    <Setter Property="CornerRadius" TargetName="Glow" Value="0"/>
    <Setter Property="CornerRadius" TargetName="WindowBorder" Value="0"/>
    <Setter Property="BorderThickness" TargetName="WindowBorder" Value="0"/>
    <Setter Property="Margin" TargetName="border" Value="0"/>
    <Setter Property="Margin" TargetName="border1" Value="0"/>
    <Setter Property="Margin" TargetName="ControlBox" Value="0,0,2,0"/>
    </Trigger>


    میتونید مثال اصلاح شده من رو دانلود کنید
    فایل های ضمیمه فایل های ضمیمه
    آخرین ویرایش به وسیله مهدی فرزاد : چهارشنبه 18 اسفند 1389 در 11:15 صبح دلیل: اصلاح حالت نمایش کدها

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •