# Argument berish

Buyruq satrining parametrlari siz ishlashini ma'lum tarzda o'zgartirish (belgilash) uchun, siz ishlatmoqchi bo'lgan dasturga parametrlar to'plamini yuborish uchun qo'llaniladi. Masalan, tahrirlovchi(notepad) da faylni ochish. Siz Windowsga o'rnatilgan Notepad muharririni quyidagicha ishga tushirishga urinib ko'rishingiz mumkin (**Buyruqlar satrini** ishga tushiring yoki **Win+R** kombinatsiyasini bosing):

> &#x20;Sizga **Buyruqlar satri** ishga tushdi. Endi unga quyidagi buyruqni yozamiz:

> > ***notepad.exe c:\Windows\win.ini***

![Buyruqlar satri](https://2189654329-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-ML4YbrwilsjU6IyB7jd%2F-MPjGwXaMvk3LRMWNi38%2F-MPjHy4t93Ckw1ofWWkP%2Fwpf10.png?alt=media\&token=6e1c98bc-2f81-4e85-aa26-f8755467b615)

&#x20;Ushbu buyruq **win.ini** faylini tahrirlovchi(**notepad.exe**)da ochadi (agar u boshqa joyda joylashgan bo'lsa, **win.ini** ga yo'lni o'zgartirishingiz kerak bo'ladi). Bloknot unga o'tkazilgan parametrlarni ko'rib chiqadi (ushbu holatda bitta parametr berilyapdi) va ulardan foydalanadi. Yani biz **notepad.exe** dasturini ishga tushuryapmiz va unga parametr sifatida **win.ini** beryapmiz, shunda **notepad.exe** dasturi "***c:\Windows"*** manzilida joylashgan **win.ini** faylini ochadi.

{% hint style="info" %}
Siz o'zinggizni WPF dasturingizga ham boshlangich parametrlarni berishingiz mumkin. Ularni App.xaml ga beramiz.
{% endhint %}

&#x20;Demak **WpfTutorialSamples** dasturini yaratamiz va **App.xaml** ilovasiga o'tamiz. **StartupUri** hodisasini **Startup** hodisasiga o'zgartiramiz. So'ng eng birinchi ochiladigan oyna **MainWindow\.xaml** ni **Application\_Startup**(yangi yaratadigan metodimiz) ga o'zgartiramiz. Bu bilan biz **Application\_Startup** metodi **MainWindow** oynasi yuklanishidan oldin ishlashini ko'rsatgan bo'lamiz.

```markup
<Application x:Class="WpfTutorialSamles.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             StartUp="Application_SartUp">
     <Application.Resources></Application.Resources>
</Application>
<!--             Bu App.xaml ilovasi                          -->
```

&#x20;Ishni **App.xaml.cs** ilovasida davom ettiramiz. Tepada aytib o'tkanimizdek **Application\_Startup** metodini yaratamiz:

```csharp
private void Application_StartUp(object sender, StartUpEventArgs e)
{
    MainWindow wnd = new MainWindow();
    if (e.Args.Length == 1)
      MessageBox.Show("Now opening file: \n\n" + e.Args[0]);
    wnd.Show();
}
//            Application_StartUp metodi
```

Demak metodni tahlil qiladigan bo'lsak:

> > **MainWindow** turida yangi **wnd** o'zgaruvchisi elon qilinmoqda;
>
> > Buyruqlar satridan kelgan parametrlar sonini 1 ga teng ekani tekshirilib. Kelgan Argumentni **MessageBox (**&#x78;abar ko'rinishi) da ***"**&#x4E;ow opening file:"* satridan so'ng yangi qatorga chiqarish buyurilyapdi.

```csharp
using System;
using System.Collections.Generic;
using System.Windows;

namespace WpfTutorialSamples
{
    public partial class App : Application
    {
        MainWindow wnd = new MainWindow();
        if (e.Args.Length == 1)
            MessageBox.Show("Now opening file: \n\n" + e.Args[0]);
        wnd.Show();
    }
{
//            App.xaml.cs ilovasi
```

&#x20;Endi dasturimiz tayyor uni ishga tushursangiz hech qanday hodisa ro'y bermaydi. Sababi biz unga boshlang'ich qiymat bermadik. Uni testlash uchun **Visual Studio** ni mavjud bo'lgan buyruqlar satrini ishlatsak bo'ladi:

&#x20;Yuqoridagi menyuda **\[Проект]** ni tanlaymiz, keyin **Свойства: \[Dastur nomi]** bo'limiga kiramiz. Ochilgan oynadan  **Отладка** bo'limini tanlaymiz:

![\[Свойства\] bo'limi](https://2189654329-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-ML4YbrwilsjU6IyB7jd%2F-MPjGwXaMvk3LRMWNi38%2F-MPjM-OryAbSKdXjx23k%2Fwpf11.png?alt=media\&token=90cead26-19fb-4f5b-b93b-df2253c4a08d)

&#x20;**Buyruqlar satri qiymatlari** uchun ajratilgan(qizil chiziqda belgilangan) hududga kerakli buyruqni yozamiz. Yozilgan buyruq matn sifatida qabul qilinadi va xabar sifatida ekranga chiqadi:<br>

![MessageBox ](https://2189654329-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-ML4YbrwilsjU6IyB7jd%2F-MPjGwXaMvk3LRMWNi38%2F-MPjMBNOL4QaJMdiG2-k%2Fwpf12.png?alt=media\&token=123d32c9-58ba-441c-80a5-468ca1396031)

&#x20;Endi dasturimizni **Buyruqlar satri** dan ishga tushiramiz va unga **Parametr** sifatida "SalomWPF" matnini beramiz:\
&#x20;**Buyruqlar satri** ga dasturimizni joylashgan joyi va nomini ko'rsatamiz va bitta bo'sh joy qoldiramiz. Chunki **Buyruqlar satri** Parametrlarni sonini aynan shu bo'sh joylarga qarab aniqlaydi.

> > D:\WpfTutorialSamples.exe SalomWPF

![CMD](https://2189654329-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-ML4YbrwilsjU6IyB7jd%2F-MPjGwXaMvk3LRMWNi38%2F-MPjMWS_6CsMScYWgGZE%2Fwpf13.png?alt=media\&token=f7891350-28ae-45fa-9918-c5e461d4b932)

![Natija](https://2189654329-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-ML4YbrwilsjU6IyB7jd%2F-MPjGwXaMvk3LRMWNi38%2F-MPjMi0Ljb4dLvCSkuC8%2Fwpf14.png?alt=media\&token=b250fe7e-940a-471f-a6ce-e475f7ff3af2)
