Windowsフォームプログラムは、追加方法をダウンロードします。 .NETFrameworkでのプログラミング。 LoginPresenterのテスト

ゴロフナ / コリスナ情報

今日は、Visual Studio2013IDEでC++Windowsフォームプロジェクトを作成する方法を説明します。 右側では、VS 2012以降、作成可能なプロジェクトのリストから、Windowsフォームの補遺項目が削除されました。 私はC++でそれらについて話している、あなたは作成されているプロジェクトの配布のオプションを選択することによってC#でそのようなプロジェクトを作成することができる。 ただし、そのようなプロジェクトをリストから選択できないという事実は、作成できないプロジェクトについては語っていません。 私自身、この記事をさらに詳しく説明したいと思います。

最初に行う必要があるのは、VisualStudioを起動することです。 VSが起動されるとすぐに、File \ u003e Create \u003eProjectが順番に押されます

その後、プロジェクトの種類を選択するよう求められます。 Visual C ++拡張機能CLR拡張機能を選択し、空のCLRプロジェクトを選択する必要があります。

プロジェクトが作成されている場合は、ブラウザで、作成されたプロジェクトに対してマウスの右ボタンでソリューションをクリックします。 表示されたコンテキストメニューでは、[追加]> [要素の作成]が順番に選択され、表示されたメニューでは、UIセクションで[Windowsフォームフォーム]が選択されます。

フォームが送信されると、ブラウザソリューションでMyForm.cppファイルが選択されます。 あなたの前で 新しいタブ 1行のコードで:

#include "MyForm.h"

このファイルには、次のコードを追加する必要があります。

名前空間システムの使用; 名前空間System::Windows::Formsを使用する; void Main(array ^ args)(Application :: EnableVisualStyles(); Application :: SetCompatibleTextRenderingDefault(false); Project1 :: MyForm form; Application :: Run(%form);)

プロジェクトの当局から話を聞いてみましょう。 選択されたpіdrozdil システム Builderを分割し、メニューから[サブシステム]を選択して[Windows(/ SUBSYSTEM:WINDOWS)]を選択し、[開始]をクリックします。

プロジェクトの権限を縮小することなく、ドダトコボの細分化に移りましょう。 エントリーポイント書きます 主要その後、キーを押します わかった。
どのプロジェクトが完了するか。 フォームの現在の外観を編集するには、ソリューションブラウザでMyForm.hファイルをクリックして、MyForm.h[コンストラクタ]タブに移動します。

良い1日を!
Model-View-Presenter-カスタムデザインテンプレートを提示します。 一見すると、すべてが単純に見えます。єモデル(モデル)、画面上のビジネスロジック全体に復讐するようなもの。 あなたが知っている表示/送信(表示)、それらの他のデータを表示する方法; 幸運な代表者(Presenter)は、ビュー内のcoristuvachaの細分化に反応し、モデルを変更し、navpakiを変更します。
プロジェクト内のフォームの数が1つになると、折りたたみが始まります。
記事は次のとおりです。
-トロシー理論;
- 燃焼の問題 WindowsフォームでのMVP(パッシブビューzocrema)の実装。
-フォーム間の遷移の実装とパラメータの転送、モーダルウィンドウの機能。
-依存性注入へのIoCコンテナの提携-DIテンプレート(およびコンストラクター注入自体);
-MVPプロ​​グラムのテストの特定の機能(NUnitおよびNSubstituteテスト用)。
-すべてをミニプロジェクトの例に適用し、やる気を起こさせる必要がありますが、それを正しく行う必要があります。
記事が詰まっています:
-Zastosuvannyaテンプレートアダプター(アダプター);
-アプリケーションコントローラテンプレートの簡単な実装。
この記事は誰のためのものですか?
小売業者の主なランク-chuliのようなWindowsフォーム上のpochatkivtsivですが、試していないか、試してみましたが、しませんでした。 歌いたい、WPFの場合はdeyakіyizastosovnі、Web開発の場合はnavіt。

問題文

簡単なタスクを考えてください-3つの画面を実装します:
1)認証画面;
2)ヘッドスクリーン;
3)koristuvachの名前を変更するモーダル画面。
kshtalt tsyogoのschosを訪問する罪:

Trochy理論

MVPは、ゴッドファーザーのように、明確にするための発明のMVC(Model-View-Controller)であり、ビジネスロジックを視覚化の方法に分割します。

インターネットでは、非個人的なMVPの実装を見ることができます。 提出するデータの配信方法に応じて、次の3つのカテゴリに分類できます。
-パッシブビュー:プリミティブデータ(行、数値)を表示するための最小限のロジックを排除するためのビューで、プレゼンターが決定を行います。
-プレゼンテーションモデル:ビューは、プリミティブデータだけでなく、ビジネスオブジェクトも送信できます。
-監視コントローラー:Viewはモデルの存在を認識し、モデルからデータを取得します。

パッシブビューの変更を見てみましょう。 主な図面を説明しましょう:
-データ表示のための最良の合意であるデータインターフェース(IView)。
-外観-IViewの特定の実装。あたかもそれ自体を特定のインターフェイス(Windowsフォーム、WPF、またはコンソールを開く)で表示でき、それを使用するユーザーについては何も知りません。 さまざまな形があります。
-モデル-ビジネスロジックにビジネスロジックを提供します(適用:データベース、リポジトリ、サービスへのアクセス)。 多分それは別のクラスで、あるいは再び、インターフェースと実装で提示されます。
-インターフェース(IView)を介して提出物にメッセージを送信する代表者。これには、提出物、データ入力の簡単な妥当性確認(検証)をサブスクライブする必要があります。 また、モデルまたはインターフェースに復讐し、Viewからモデルまたはインターフェースにデータを転送し、更新を要求します。

代表者の典型的な実装

public class Presenter(private readonly IView _view; private readonly IService _service; public Presenter(IView view、IService service)(_view = view; _service = service; _view.UserIdChanged + =()=> UpdateUserInfo();)private void)( var user = _service.GetUser(_view.UserId); _view.Username = user.Username; _view.Age = user.Age;))


クラス(さまざまなインターフェイス、サブ)の最小限の接続を提供するプラスは何ですか?
1.決定することなく、任意のコンポーネントのロジックを自由に変更できます。
2.ユニットテストの絶好の機会。 TDDshanuvalniksはグリップを手に入れることができます。
やってみましょう!

プロジェクトを整理する方法は?

ソリューションが4つのプロジェクトから形成されていると考えてみましょう。
-DomainModel-復讐サービスとすべてのリポジトリ、つまり-モデル;
-プレゼンテーション-視覚的な表現、tobtoの視界に横たわるように、レポートの論理を復讐すること。 すべての代表者、インターフェースの外観およびその他の基本クラス。
-UI-Windowsフォームの補遺、その他のフォーム(インターフェイスの外観の実装)および起動ロジック。
-テスト-ユニットテスト。

Main()に何を書くか?

Windowsフォームプログラムを実行する標準の実装は次のようになります。

Private static void Main()(Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new MainForm());
Ale miがそれを行ったので、代表者が外観をケルブ化するために、彼はコードが次のようになるようにしたいと考えています。

Private static void Main()(Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); var presenter = new LoginPresenter(new LoginForm()、new LoginService()); //依存性注入presenter.Run();)
最初の画面を実装してみましょう。

基本的なインターフェース

//すべての外観のグローバルメソッドpublicinterfaceIView(void Show(); void Close();)//コントラクト。この代表者はフォームと対話しますpublic interface ILoginView:IView(string Username(get;)string Password(get; );)イベントアクションログイン; //pod_ya"koristuvachはログインを試みます"voidShowError(string errorMessage); )public interface IPresenter(void Run();)//愚かな承認サービスpublic interface-承認に成功しました。それ以外の場合はfalse)


トリビュート

public class LoginPresenter:IPresenter(private readonly ILoginView _view; private readonly ILoginService _service; public LoginPresenter(ILoginView view、ILoginService service)(_view = view; _service = service; _view.Login + =()view .Password);)public void Run ()(_view.Show();)private void Login(string username、string password)(if(username == null)throw new null)throw new ArgumentNullException( "password"); var user = new User(Name = username、Password = password); if(!_service.Login(user))else(//認証が成功し、ヘッド画面が起動します(?))))


フォームを作成し、それをILoginViewインターフェースに実装します。これは、ILoginService実装をどのように作成するかは関係ありません。 以下は1つ未満の機能です。

パブリック部分クラスLoginForm:Form、ILoginView(// ... public new void Show()(Application.Run(this);))
これは、アドオンを開始してフォームを表示し、フォームを閉じた後、プログラムを正しく完了するための呪文です。 それまで振り返ってみましょう。

裁判はありますか?

代表者(LoginPresenter)が作成された瞬間から、フォームやサービスを実装せずに、ヨガの単体テストをすぐに実行できます。
テストを作成するために、私はNUnitライブラリとNSubstituteライブラリ(インターフェイスの背後にスタブクラスを作成するためのライブラリ、モック)の寄稿者です。

LoginPresenterのテスト

パブリッククラスLoginPresenterTests(プライベートILoginView _view;パブリックボイドSetUp()(_view = Substitute.For (); //ビューのスタブvarservice= Substitute.For (); //サービスのスタブservice.Login(Arg.Any ())// admin / passwordにログインしなくなりました。Returns(info => info.Arg ().Name == "admin" && info.Arg ().Password == "password"); var presenter = new LoginPresenter(_view、service); presenter.Run(); )public void InvalidUser()(_view.Username.Returns( "Vladimir"); _view.Password.Returns( "VladimirPass"); _view.Login + = Raise.Event (); _view.Received()。ShowError(Arg.Any ()); //このメソッドは、パードンのテキストを呼び出す役割を果たします)public void ValidUser()(_view.Username.Returns( "admin"); _view.Password.Returns( "password"); _view.Login + = Raise.Event (); _view.DidNotReceive()。ShowError(Arg.Any ()); //そして私のvipadkaではすべてがOKです))


プログラム自体である限り、テストは悪くなります。 エール、だからchiіnakshe臭いは正常に通過しました。

パラメータを使用して別の画面を起動するのは誰で、どのようにしたらよいですか?

覚えていると思いますが、私は認証を成功させるための正しいコードを書きませんでした。 別の画面を起動するにはどうすればよいですか? まず第一に、それは考えに落ちます:

// LoginPresenter:ログインに成功しましたvar mainPresenter = New MainPresenter(new MainForm()); mainPresenter.Run(user);
アレミーは、代表者が症状、彼らのインターフェースのクリミアについて何も知らなかったことに気づきました。 仕事とは?
アプリケーションコントローラーのパターンが助けになります(実装は簡略化されています)。その真ん中には、実装のオブジェクトをインターフェイスの背後に配置する方法を知っているIoCコンテナーがあります。
コントローラーは、コンストラクターパラメーター(新しいDI)によってスキン代表に渡され、おおよそ次のメソッドを実装します。

パブリックインターフェイスIApplicationController(IApplicationController RegisterView ()where TImplementation:class、TView where TView:IView; IApplicationController RegisterService ()de TImplementation:class、TService; void Run ()ここで、TPresenter:クラス、IPresenter; )。
少しリファクタリングした後、プログラムの起動は次のようになります。

Private static void Main()(Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); //すべてのフォールバックが1つの場所に登録されるようになりました:var controller = new ApplicationController(new LightInjectAdapder()).RegisterView ().RegisterService ().RegisterView (); controller.Run (); }
新しいApplicationController(new LightInjectAdapder())についてのいくつかの言葉。 IoCコンテナーとして、LightInjectライブラリをハッキングしましたが、直接ではなく、アダプター(アダプター・パターン)を介してハッキングしたため、コンテナーを別のアダプターに変更する必要がある場合は、別のアダプターを作成して、コントローラ。 勝利を収めたすべての方法は、ほとんどのIoCライブラリにあり、折りたたまれており、無罪です。
追加のIPresenterインターフェースが実装されます。これにより、Runメソッドがパラメーターを受け入れる可能性が低くなります。 最初の画面と同様に、新しいビューで徐々に減少します。
今、誇りがないわけではありませんが、別の画面を起動し、許可されたkoristuvachをそこに渡します。

Controller.Run (ユーザー); View.Close();

フォームを取得して閉じることはできません。

行View.Close()の水中石の1つ。その後、最初のフォームが閉じられ、同時にそれから追加されます。 右側では、Application.Run(Form)が標準のWindowsウェイクアップループを実行し、渡されたフォームをプログラムのメインフォームと見なします。 これは、プログラムがForm.ClosedサブでExitThreadをハングさせ、フォームが閉じた後にプログラムを呼び出して閉じるためです。
この問題を回避するには、いくつかの方法があります。そのうちの1つは、メソッドを変更することです。Application.Run(ApplicationContext)を実行してから、ApplicationContext.MainFormの機能をオーバーライドします。 フォームコンテキストへの転送は、プログラムコントローラーの助けを借りて実装されます。プログラムコントローラーでは、ApplicationContextオブジェクト(インスタンス)が登録され、代表の開始時にフォームコンストラクター(私はDIを開始します)に送信されます。 最初の2つの画面を表示する方法は次のようになります。

// LoginForm public new void Show()(_context.MainForm = this; Application.Run(_context);)// MainForm public new void Show()(_context.MainForm = this; base.Show();)

モーダルウィンドウ

モーダルウィンドウの実装は、困難を意味するものではありません。 [名前の変更]ボタンで、Controller.Runにチェックマークが付いています (ユーザー)。 他の人にフォームを表示する唯一の方法は見出しではなく、そのフォームはApplicationContextの表示には必要ありません。

Public new void Show()(ShowDialog();)
違いを認識する必要がある限り、Formクラスにはすでに実装があるため、メソッドを変更する必要はありません。

さて、彼らはそれを台無しにしました...それは今CE vikoristatiはどうですか?

これで、フレームの準備ができたら、新しいフォームを追加すると、次のようなショートカットが作成されます。
  1. 外観のインターフェース、モデルのインターフェース(必要に応じて)を記述します。
  2. これは、代表者であるprima facie virishivshiによって実現可能であるため、新しいデータをモデルとして転送します。
  3. [オプション]私たちは代表者のためにテストを書きます、私たちは考えを変えます、すべてが大丈夫です。
  4. [オプション]実装可能なモデルとそのテスト。
  5. フォームを提供し、外観のインターフェイスを実装します。
IoCコンテナを愛する人に変更することは、アダプタクラスを使用して単純なIContainerインターフェイスを実装する方法です。

あなたはからデモプロジェクトを拾うことができます

  1. https://metanit.com/sharp/windowsforms/1.1.php

    Windowsフォームの概要

    .NETプラットフォームを利用するためのグラフィカルインターフェイスを作成するには、 さまざまなテクノロジー-ウィンドウフォーム、WPF、Windowsストアプログラム(Windows 8 / 8.1 / 10用)。 ただし、最もシンプルで便利な書類プラットフォームは、ウィンドウフォームまたはフォームです。 デンマーク語は、WinFormsの追加テクノロジと管理の主要な要素の作業のためのグラフィカルインターフェイスの作成の原則を理解するためのメタデータとして配置するのに役立ちます。

    グラフィックソフトウェアによって作成されました
    グラフィックプロジェクトを作成するには、VisualStudio開発環境が必要です。 Visual Studio 2013のバージョンはこれまでで最も拡張されているため、ツイートしてよろしくお願いします。 無料版与えられた媒体 Visual Studio Community 2013 Yakuは、https://www.visualstudio.com/en-us/products/visual-studio-community-vs.aspxの側面にあります。

    ミドルウェアとそのすべてのコンポーネントをインストールした後、Visual Studioを起動し、グラフィックプログラムプロジェクトを作成します。 そのために、メニューで[ファイル]項目(ファイル)を選択し、サブメニューで[新規]-> [プロジェクト]([作成]-> [プロジェクト])を選択します。 私たちの前で最後に目にするのは、新しいプロジェクトを作成するための対話ウィンドウです。

    左側の列はWindowsデスクトップを選択し、中央のプロジェクトタイプの中央部分はタイプを選択します Windowsフォームアプリケーションそして女性にとって、私は下のフィールドにいるようなものです。 たとえば、私たちはヨガと呼びます helloapp。 次はOKを押します。

    Visual Studioがロックの背後に作成されたファイルからプロジェクトを開いた後:

    Visual Studioの範囲のほとんどは、将来のプログラムの形をとることができるグラフィックデザイナーによって占められています。 当分の間、それは空であり、見出しForm1しかありません。 右側には、ソリューション/プロジェクトファイル(ソリューションエクスプローラー)があります。 ここでは、フォームのファイルを含む、補遺に関連するすべてのファイルを見つけることができます Form1.cs.

    下部では、右利きの人は権限のウィンドウ-プロパティとして知られています。 この時点で、私はコントロールの要素としてフォームを選択したので、フォームに関連付けられて、どのフィールドに当局が表示されます。

    これで、フォームTextの力がわかり、その意味をbe-yakelseに変更します。

    このようにして、フォームのタイトルを変更しました。 これで、フィールドに転送できるのは、ボタンなどの重要な要素です。 Visual Studioの左側にある[ツールボックス]タブ(ツールボックス)がわかります。 このタブをクリックすると、要素を含むパネルが表示されます。星を他の要素のフォームに転送できます。

    マウスのkazіvnikにїїをロードしたiボタンの中央の要素を知っているので、それをフォームに転送します。

    ツェは視覚的な部分です。 それでは、プログラミングに取り掛かりましょう。 私のC#の最も単純なコード、一種のアクティブ化およびプッシュボタンを追加しましょう。 私が罪を犯した人は誰でも、このフォームからの接続であるコードファイルに移動します。 表示するコードファイルがないため、マウスの右ボタンでフォームをクリックし、[コードの表示]メニュー(コードファイルを表示)でクリックできます。

    ただし、コードを書きすぎないように、別の方法で高速化します。 ボタンにマウスポインタを合わせ、下のクリックをクリックします。 コードファイルを自動的に消費します Form1.cs、これは次のようになります。

    システムの使用;

    System.ComponentModelを使用します。
    System.Dataを使用します。
    vicorist System.Drawing;
    System.Linqを使用します。
    System.Textを使用します。

    System.Windows.Formsを使用します。

    名前空間HelloApp
    {

    {
    パブリックフォーム1()
    {
    InitializeComponent();
    }


    {

    }
    }
    }
    ボタンを押した後に通知を表示するDodamoは、次の順序でコードを変更します。

    システムの使用;
    vicorist System.Collections.Generic;
    System.ComponentModelを使用します。
    System.Dataを使用します。
    vicorist System.Drawing;
    System.Linqを使用します。
    System.Textを使用します。
    vicorist System.Threading.Tasks;
    System.Windows.Formsを使用します。

    名前空間HelloApp
    {
    パブリック部分クラスForm1:フォーム
    {
    パブリックフォーム1()
    {
    InitializeComponent();
    }

    Private void button1_Click(object sender、EventArgs e)
    {
    MessageBox.Show( "Hi");
    }
    }
    }
    プログラムの起動
    プログラムをブートモードで実行するには、F5キーまたはVisualStudioパネルの緑色の矢印を押します。 次回、フォームがボタン自体で起動するとき。 そして、フォームのボタンを押すと、vapingに関するリマインダーが表示されます。

    プログラムを起動した後、スタジオは拡張exeファイルのファイルからヨガをコンパイルします。 知る ダニファイルプロジェクトフォルダに移動して、bin/Debugまたはbin/Releaseディレクトリに移動できます。

    プロジェクトのグラフィックサプリメントの作成について簡単に説明したので、主要なコンポーネントと、もちろんフォームの概要に進むことができます。

  2. https://metanit.com/sharp/windowsforms/2.1.php

    フォーム付きロボット
    フォームの基礎

    Zovnіshnіyvglyadは、フォームを介して私たちを非常に重要にプログラムします。 フォームは人生の主要なブロックです。 悪臭はkeruvannyaのさまざまな要素のための容器に置かれました。 そして、細分化のメカニズムは、フォームの要素がcoristuvachaを導入し、そのような方法でcoristuvachaと相互作用することを可能にします。

    VisualStudioでプロジェクトを開くとき グラフィックエディタフォームの視覚的な部分、つまりプログラムの起動後、要素がコントロールパネルから転送される場所で使用できるように、その部分を使用できます。 しかし、実際には、フォームは、メソッド、権限、およびその他のもので構成されているハード機能を取ります。 主なパワーフォームを見てみましょう。

    プログラムを実行すると、1つの空のフォームが表示されます。 コンポーネントがほとんどない空のフォームから、このような単純なプロジェクトに抗議します。

    私のバチモ号だけが形成するものに関係なく、プログラムクラスのグラフィックプログラムに入り、ファイルを配置するための出発点 Program.cs:

    システムの使用;
    vicorist System.Collections.Generic;
    System.Linqを使用します。
    vicorist System.Threading.Tasks;
    System.Windows.Formsを使用します。

    名前空間HelloApp
    {
    静的クラスプログラム
    {
    static void Main()
    {
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    Application.Run(new Form1());
    }
    }
    }
    プログラムは最初にこのクラスを開始し、次にApplication.Run(new Form1())を使用してForm1フォームを実行してヘルプを表示します。 開始フォームを別のクラスの補遺として変更する場合は、Form1をフォームの別のクラスに変更する必要があります。

    フォーム自体はzm_stの後ろで折りたたむことができます。 低成分に細分されて勝ちました。 したがって、プロジェクトの構造にはファイルがあります Form1.Designer.cs、これは次のようになります。

    名前空間HelloApp
    {
    部分クラスForm1
    {
    ///


    ///必須のデザイナー変数。
    ///

    ///


    ///使用されているリソースをすべてクリーンアップします。
    ///

    /// 管理対象リソースを破棄する必要がある場合はtrue。 それ以外の場合はfalse。

    {

    {
    components.dispose();
    }
    base.Dispose(disposed);
    }

    #regionWindowsフォームデザイナで生成されたコード

    ///


    ///Designerサポートに必要なメソッド-変更しないでください
    ///コードエディタを使用したこのメソッドの内容。
    ///


    {
    this.SuspendLayout();
    // Form1



    this.Name = "Form1";
    this.Text = "Hello world!";
    this.ResumeLayout(false);

    }
    }
    ここでは、フォームクラスForm1は、オブジェクトのデストラクタの役割を果たすDispose()と、フォームの累乗の初期値を設定するInitializeComponent()の2つのメソッドを持つことができるため、耳をつんざくようになっています。

    ボタンなどの要素を追加すると、その説明もファイルに追加されます。

    エール、実際には、このクラスでz_shtovhuvatimemosyaを使用することはめったにありません。これは、オブジェクトの権限のインストール、変更のインストールなど、主要な設計機能でvikonuєを悪臭を放ちます。

    別のファイル- Form1.resx-リソースの保存フォーム。 原則として、多くの現代の作物のために同時に単一の邸宅の形を作成するために、資源は勝利を収めています。

    І重要なファイル- Form1.cs、プロジェクトの構造では単にForm1と呼ばれ、フォームのコードまたはプログラムロジックを置き換えます。

    システムの使用;
    vicorist System.Collections.Generic;
    System.ComponentModelを使用します。
    System.Dataを使用します。
    vicorist System.Drawing;
    System.Linqを使用します。
    System.Textを使用します。
    vicorist System.Threading.Tasks;
    System.Windows.Formsを使用します。

    名前空間HelloApp
    {
    パブリック部分クラスForm1:フォーム
    {
    パブリックフォーム1()
    {
    InitializeComponent();
    }
    }
    }
    ここでのキャプションには、InitializeComponent()メソッドが単純に呼び出されるフォームコンストラクターのみがあり、デザイナーファイルがあります Form1.Designer.cs。 ファイルmiおよびより多くのpracyuvatimemoと同じです。

  3. https://metanit.com/sharp/windowsforms/2.2.php

    フォームの主な優位性

    特別なウィンドウのプロパティ(パワー)の助けを借りて、右利きのVisual Studioは、要素のパワーを処理するための便利なインターフェイスを提供します。

    これらの力の素晴らしさは、視覚的な形に注がれています。 主な当局を追いかけましょう:

    • 名前:フォームに設定します。より正確には、クラスの名前で、クラスフォームに分類されます。
    • BackColor:フォームの背景の色を示します。 パワーの力を押して、提案された色のリストまたは色のパレットから私たちに合った色を選ぶことができます
    • BackgroundImage:フォームの背景画像に表示
    • BackgroundImageLayout:フォームに表示されるように、BackgroundImageパワーで設定された画像としてレンダリングされます。
    • ControlBox:フォームメニューを表示するかどうかを指定します。 で この特定のタイプにメニューの下には、最も重要なレベルのメニューが表示され、プログラムアイコン、フォームのタイトル、および最小化ボタンが交差するフォームが表示されます。 力が偽である可能性がある場合は、フォームが鳴るのに役立つアイコンや十字架は必要ありません
    • カーソル:フォームに入力されるカーソルのタイプを設定します
    • 有効:電源をfalseに設定できるため、テキストボックスとしての入力を受け入れることができないため、ボタンをクリックしたり、テキストボックスにテキストを入力したりすることはできません。
    • フォント:すべてのフォームとその上のすべての場所のフォントを設定します。 フォームの要素に独自のフォントを設定したプロテは、ヨガを再定義できます
    • ForeColor:フォームのフォントの色
    • FormBorderStyle:フォーム間にヘッダー行を表示する方法を指定します。 パワーをNoneに復元することができます 古い外観公正な形のサプリメント
    • HelpButton:フォームを完成させるためのボタンが表示されるかどうかを示します
    • アイコン:フォームのアイコンを設定します
    • 場所:画面の左上隅を基準にして位置を設定し、StartPositionの電源が手動に設定されるようにします
    • MaximizeBox:フォームヘッダーのウィンドウの最大化ボタンを使用できるかどうかを指定します
    • MinimizeBox:ウィンドウ最小化ボタンを使用できるかどうかを指定します
    • MaximumSize:フォームの最大サイズを設定します
    • MinimumSize:フォームの最小サイズを設定します
    • 不透明度:フォームの透明度を設定します
    • サイズ:cobrozmіrフォームを選択してください
    • StartPosition:開始位置を示します。どのフォームが画面に表示されますか
    • テキスト:フォームのタイトルを設定します
    • TopMost:powerをtrueに設定できる場合、フォームは常に他のウィンドウの上に表示されます
    • 表示可能:フォームが表示されている場合、フォームをcorystuvacheに添付する場合は、このパワーをfalseに設定できます
    • WindowState:起動時に再起動するフォームを指定します:Normal、Maximized、またはMinimized
    当局のプログラミング
    権力の権力における権力の重要性の助けを借りて、フォームの正式な外観を私たち自身の判断に変更することができ、それらすべてをコードで動的に作成することができます。 コードに移りましょう。フォーム上でマウスを右クリックして、[コードの表示]コンテキストメニューで選択します。 目の前にコードファイルがあります Form1.cs。 このようにヨガを変更します。

    システムの使用;
    vicorist System.Collections.Generic;
    System.ComponentModelを使用します。
    System.Dataを使用します。
    vicorist System.Drawing;
    System.Linqを使用します。
    System.Textを使用します。
    vicorist System.Threading.Tasks;
    System.Windows.Formsを使用します。

    名前空間HelloApp
    {
    パブリック部分クラスForm1:フォーム
    {
    パブリックフォーム1()
    {
    InitializeComponent();
    Text = "Hello World!";
    this.BackColor = Color.Aquamarine;
    this.Width = 250;
    this.Height = 250;
    }
    }
    }

    このようにして、見出し、背景色、幅、高さの形で支配のキルカを改善しました。 フォームコンストラクターを変更するときは、コードがInitializeComponent()メソッドの呼び出しの後に実行されることになっていることを確認する必要があるため、ここでのすべての電力設定は次のメソッドに変更されます。

    インストールされた拡張フォーム
    フォームのサイズを設定するには、幅/高さやサイズなどの累乗を変更できます。 幅/高さは、とがったお尻のように数値を取ります。 サイズの累乗で寸法を設定する場合、サイズタイプのオブジェクトに累乗を割り当てる必要があります。

    This.Size = New Size(200,150);
    Sizeオブジェクトは、幅と高さを設定するための数値でコンストラクターに入力されます。

    Pochatkoveroztashuvannyaフォーム
    次のいずれかの値を取ることができるため、多くの場合、フォームの形成は追加のパワーStartPositionのために復元されます。

    • 手動:フォームの位置は、場所の権限によって異なります
    • CenterScreen:画面の中央にあるフォームの位置
    • WindowsDefaultLocation:画面上のフォームの位置はWindowsシステムによって決定され、サイズはパワーサイズによって決定されます
    • WindowsDefaultBounds:画面上のフォームの初期位置とサイズはWindowsシステムによって設定されます
    • CenterParent:フォームの位置はBatkivskyウィンドウの中央に設定されます
    すべての値がFormStartPositionボックスに移動されるため、たとえば、フォームを画面の中央に配置するには、次のように記述する必要があります。

    This.StartPosition = FormStartPosition.CenterScreen;
    背景tacoloriフォーム
    フォームの背景として色を設定するには、フォントの場合、Color構造に格納されている色の値を強調表示する必要があります。

    This.BackColor = Color.Aquamarine;
    this.ForeColor = Color.Red;
    さらに、画像の背景を権限のBackgroundImageの背景に設定し、権限またはコードの画像に描画して、画像へのパスを示すことができます。

    This.BackgroundImage = Image.FromFile( "C:\ Users \ Eugene \ Pictures \ 3332.jpg");
    背景画像を表示する必要性を適切に改善するには、BackgroundImageLayoutのパワーを獲得する必要があります。これにより、次のいずれかの値を取得できます。

    • なし:画像はフォームの左上隅に移動し、その穂軸の値を保存します
    • タイル:画像はモザイクの形でフォームに配置されます
    • 中央:フォームの中央のステッチの画像
    • ストレッチ:画像はプロポーションを維持せずにサイズに合わせてストレッチされます
    • ズーム:画像は形状に合わせて拡大し、比率を節約します
    たとえば、画面の中央にある図形を展開してみましょう。

    This.StartPosition = FormStartPosition.CenterScreen;

  4. https://metanit.com/sharp/windowsforms/2.3.php

    フォームの追加。 フォーム間の相互作用

    プロジェクトにもう1つのフォームを追加するには、ソリューションエクスプローラーウィンドウでプロジェクトを右クリックし、[追加(追加)]->[Windowsフォーム...]を選択します。

    たとえば、Damo new form yakes im'ya、 Form2.cs:

    Otzhe、私たちのプロジェクトは友人に形を与えられました。 次に、2つのフォーム間の相互作用を作成してみましょう。 最初のフォームがボタンで押され、他のフォームがクリックされたとしましょう。 まず、最初のフォームForm1にボタンを追加し、ボタンをクリックしてファイルコードに移動します。 Otzhe、ボタンを押した後にロックの後ろに作成されるボタンを押すためのツールとして使用できます。


    {

    }
    次に、別の形式の新しいコードwikiにドダモします。 Form2という別のフォームがあるので、このクラスのオブジェクトを作成し、画面にこの表示を行うには、Showメソッドをクリックします。

    Private void button1_Click(object sender、EventArgs e)
    {
    Form2 newForm = new Form2();
    newForm.Show();
    }
    今zrobimonavpaki-別の形がコショウに刺さっています。 当分の間、他の形式は最初の形式の根拠を知りません。 これを修正するには、最初のフォームに関する情報を転送するための別のフォームが必要です。 コンストラクターからフォームにリクエストを転送することで、より高速になります。

    次に、別のフォームに移動して、їїコードに移動します。フォームを右クリックして、[コードの表示]を選択します。 ワインが空である限り、コンストラクターに復讐するだけでは十分ではありません。 OskіlkiC#podtrimu再バインドメソッド、いくつかのメソッドとコンストラクターを作成できます さまざまなパラメータそれらの1つviklikatiの状況でその休耕地。 この場合も、ファイルを攻撃用の別の形式のコードに変更します。

    システムの使用;
    vicorist System.Collections.Generic;
    System.ComponentModelを使用します。
    System.Dataを使用します。
    vicorist System.Drawing;
    System.Linqを使用します。
    System.Textを使用します。
    vicorist System.Threading.Tasks;
    System.Windows.Formsを使用します。

    名前空間HelloApp
    {
    パブリック部分クラスForm2:フォーム
    {
    パブリックフォーム2()
    {
    InitializeComponent();
    }

    パブリックフォーム2(フォーム1f)
    {
    InitializeComponent();
    f.BackColor = Color.Yellow;
    }
    }
    }
    実際、小さなものがここに新しいパブリックForm2(Form1 f)コンストラクターを追加しました。この場合、フォームを変更して同じ色に設定する必要があります。 それでは、最初の形式のコードに移りましょう。デミは、攻撃の変更ヨーゴの形式を友人に呼びかけました。

    Private void button1_Click(object sender、EventArgs e)
    {
    Form2 newForm = new Form2(this);
    newForm.Show();
    }
    このタイプのキーワードのシャードは、現在のオブジェクト(Form1オブジェクト)への送信を表します。別のフォームが作成されると、最初のフォームによって削除されます。

    次に、ボタンを押した後、最初のフォームの色を変更するために、別のフォームを作成します。

    次の形式で流れるオブジェクトを作成することもできます。

    Private void button1_Click(object sender、EventArgs e)
    {
    Form1 newForm1 = new Form1();
    newForm1.Show();
    Form2 newForm2 = new Form2(newForm1);
    newForm2.Show();
    }
    dekilcomを使用する場合、最初にProgram.csファイルで起動されるため、フォームの1つがヘッドフォームであることをフォームで確認する必要があります。 たくさんのフォームが一度に開かれるとすぐに、頭が閉じられると、プログラム全体が閉じられ、同時に他のすべてのフォームが一緒になります。

  5. https://metanit.com/sharp/windowsforms/2.4.php

    PodіїWindowsフォーム。 フォームを送信する

    Windowsフォームとの対話には、サブメカニズムがあります。 Windowsフォームのポッドは、C#の標準ポッドを表します。これは、ビジュアルコンポーネントにのみ固定され、C#と同じルールで並べ替えられます。 ただし、Windowsフォームの作成にはまだいくつかの特殊性があります。

    WinFormsには、標準の入力セットがあり、すべてのビジュアルコンポーネントに最適なものがいくつかあります。 Okremіelementiは彼らのポッドを追加しますが、彼らとの仕事の原則は似ています。 要素のすべてのサブ要素を確認するには、グラフィックデザイナーフィールドから要素を選択し、フォームパネルのサブタブに移動する必要があります。 たとえば、サブフォーム:

    サンプルファイルを追加するには、入力に名前を付けるための指示が記載された空のフィールドをクリックするだけで、VisualStudioによってサンプルコピーが自動的に生成されます。 たとえば、を押して、サブロードのサンプルを作成します。

    Іtseフィールドは、Loadでサンプラーのメソッドに名前を付けることで表示されます。 プロモーションの場合、ワインはForm1_Loadと呼ばれます。

    Form1.csファイルに移り、Form1_Loadメソッドも自動生成しましょう。


    {
    パブリックフォーム1()
    {
    InitializeComponent();
    }


    {

    }
    }
    І皮膚の絡み合いフォームの場合は、Form1_Loadのフォームのコードを使用します。

    原則として、さまざまなビジュアルコンポーネントのほとんどのコレクターには、2つのパラメーターがあります。sender-サブを開始したオブジェクト、サブに関する情報を収集する引数(このEventArgs e)。

    Ale tselisherobrobnik。 このようなランクで作成されたワークブックを追加するには、Form1.Designer.csファイルを確認します。

    名前空間HelloApp
    {
    部分クラスForm1
    {
    private System.ComponentModel.IContainer components = null;

    保護されたオーバーライドvoidDispose(bool disposed)
    {
    if(disposed &&(components!= null))
    {
    components.dispose();
    }
    base.Dispose(disposed);
    }
    private void InitializeComponent()
    {
    this.SuspendLayout();

    This.AutoScaleDimensions = New System.Drawing.SizeF(6F、13F);
    this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
    this.ClientSize = New System.Drawing.Size(284、261);
    this.Name = "Form1";
    //醸造所を追加する
    this.Load + = New System.EventHandler(this.Form1_Load);
    this.ResumeLayout(false);
    }
    }
    }
    クイズを追加するには、標準のC#構文を使用します。this.Load+ = System.EventHandler(this.Form1_Load)

    したがって、同様の方法で作成を表示する場合は、Form1.csのフォームコードを使用してメソッドを表示するだけでなく、このファイルにファインダーを追加する必要があります。

    たとえば、サブの詳細をプログラムで、たとえばフォームコンストラクタに追加できます。

    システムの使用;
    vicorist System.Collections.Generic;
    System.ComponentModelを使用します。
    System.Dataを使用します。
    vicorist System.Drawing;
    System.Linqを使用します。
    System.Textを使用します。
    vicorist System.Threading.Tasks;
    System.Windows.Formsを使用します。

    名前空間HelloApp
    {
    パブリック部分クラスForm1:フォーム
    {
    パブリックフォーム1()
    {
    InitializeComponent();
    this.Load + = LoadEvent;
    }

    Private void Form1_Load(object sender、EventArgs e)
    {
    }

    Private void LoadEvent(object sender、EventArgs e)
    {

    }
    }
    }
    作成されたForm1_Loadワークブックの前に、別のフォームワークブックが追加されています:this.Load + = LoadEvent;、これは新しい色の背景を設定します。

  6. https://metanit.com/sharp/windowsforms/2.5.php

    長方形の作成。 フォームを閉じる

    ロックの背後にあるWindowsフォームは単純明快です。 Prote miは、間接的にdovilniフォームを作成できます。 権力を勝ち取った地域。 その意味として、同じ名前のクラスRegionのオブジェクトです。

    非長方形のフォームが衝突し、音が鳴り、インターフォームが振動しない場合、コードンの破片はRegionオブジェクトによって与えられます。 フォーム間で使用するには、フォームのFormBorderStyle権限をNoneに設定する必要があります。

    そしてもう1つの側面は、保護する必要があります。変位した、閉じた、最大化および最小化するフォームをポーリングします。 したがって、このように、プライマリフォームの場合と同様に、十字を押してフォームを閉じることはできず、新しい場所に移動することもできません。 そのため、このプログラムロジックを指定する必要があります。

    Otzhe、フォームコードに移動して、次のランクに変更してみましょう。

    システムの使用;
    vicorist System.Collections.Generic;
    System.ComponentModelを使用します。
    System.Dataを使用します。
    vicorist System.Drawing;
    System.Linqを使用します。
    System.Textを使用します。
    vicorist System.Threading.Tasks;
    System.Windows.Formsを使用します。

    名前空間HelloApp
    {
    パブリック部分クラスForm1:フォーム
    {
    ポイントmoveStart; //移動するポイント

    パブリックフォーム1()
    {
    InitializeComponent();
    this.FormBorderStyle = FormBorderStyle.None;
    this.BackColor = Color.Yellow;
    button1.Text="閉じる";
    }

    Private void button1_Click(object sender、EventArgs e)
    {
    this.Close();
    }

    Private void Form1_Load(object sender、EventArgs e)
    {
    System.Drawing.Drawing2D.GraphicsPath myPath = new System.Drawing.Drawing2D.GraphicsPath();
    //フォームの高さと幅を持つ楕円を作成します
    myPath.AddEllipse(0、0、this.Width、this.Height);
    //あなたがバチッティしたいので、ヘルプのためにそのエリアを形成するelіpsuを作成します
    リージョンmyRegion=new Region(myPath);
    //表示領域を設定します
    this.Region = myRegion;
    }

    Private void Form1_MouseDown(object sender、MouseEventArgs e)
    {

    if(e.Button == MouseButtons.Left)
    {
    moveStart = new Point(e.X、e.Y);
    }
    }

    Private void Form1_MouseMove(object sender、MouseEventArgs e)
    {
    //マウスの左ボタンが押された
    if((e.Button&MouseButtons.Left)!= 0)
    {
    //新しいフォーム位置ポイントを取得します
    ポイントdeltaPos=new Point(e.X-moveStart.X、e.Y-moveStart.Y);
    //フォームの位置を設定します
    this.Location = new Point(this.Location.X + deltaPos.X、
    this.Location.Y + deltaPos.Y);
    }
    }
    }
    }

    フォーム領域の作成は、Form1_Loadサブプロジェクトでチェックされます。 エリアを作成するために、グラフィックパスが描画されます。これは、楕円が追加されるSystem.Drawing.Drawing2D.GraphicsPathクラスのオブジェクトです。 グラフィックウェイを使用すると、フォームを作成できます。海の星を見てフォームが必要な場合は、勝利したグラフィックウェイを適切なランクで修正するだけで済みます。

    button1_Clickボタンを押してフォーム内のフォームを閉じるには、プログラムによってフォームが閉じられます:this.Close()

    フォームを移動するために、2つのサブフォームが処理されます。マウスのボタンを押すことと、マウスのボタンを移動することです。

  7. https://metanit.com/sharp/windowsforms/3.1.php

    Windowsフォームのコンテナ

    グループの管理要素を編成するには、特別な要素であるコンテナを使用する必要があります。 たとえば、Panel、FlowLayoutPanel、SplitContainer、GroupBoxなどです。 同じ形をコンテナに運ぶことができます。 コンテナの選択は、要素の点でより軽く、また歌う視覚スタイルの形でもあります。

    すべてのコンテナには、コンテナの任意の要素を復讐するためのコントロールの力があります。 要素をツールバーからコンテナ(ボタンなど)に転送すると、コレクションコンテナに自動的に追加されます。 それ以外の場合は、コレクションの追加コードにケアの要素を動的に追加することもできます。

    要素の動的な追加
    フォームに動的ボタンを追加します。 どのドダモのために、私は絡み合いの形を取り、そこで私はキュレーションの新しい要素を作成します。 ヘルプコードまたはビジュアルランクのいずれかで作業できます。

    ツールバーから要素をドラッグすることで、新しい要素を金型に簡単に追加できます。 ただし、周囲を完成させるこのような方法では、シャードはフォーム上の要素を動的に作成(参照)する必要があることがよくあります。

    要素を動的に追加するために、ファイルコードの入力フォームのサンプルを作成します。


    {
    }
    次に、フォームにボタンを追加するための新しいコードを追加します。

    Private void Form1_Load(object sender、EventArgs e)
    {


    helloButton.ForeColor = Color.DarkGray;
    helloButton.Location = NewPoint(10、10);

    this.Controls.Add(helloButton);
    }
    背面には、電源に取り付けられるボタンを作成します。 次に、Controls.Addメソッドを使用して、フォーム要素のコレクションに追加します。 ヤクビーを壊したり、ボタンを振ったりすることはありませんでした。フォームのために破片を作ることを夢見ていませんでした。

    Controls.Remove()メソッドを使用すると、要素を追加する前にフォームから要素を削除できます。

    This.Controls.Remove(helloButton);

    この方法でフォームをコンテナとして使用したいが、GroupBoxなどの他のコンテナから追加された要素を追加した場合は、独自のメソッドをzastosovuvatsyaします。

  8. https://metanit.com/sharp/windowsforms/3.2.php

    要素GroupBox、Panel、およびFlowLayoutPanel

    特別なコンテナ内のGroupBox。これは非常線で囲まれています。 Vіnmaє見出し、これは 権限テキスト。 タイトルなしでGroupBoxを生成するには、テキストの累乗の値として、空の行を挿入するだけです。

    多くの場合、この要素はトランジションのグループ化に使用されます-RadioButton要素、シャードを使用すると、これらのグループを分離できます。

    Panel要素は、GroupBoxのように、要素を1つのグループに結合するパネルを表します。 別の形で視覚的に怒っている場合もありますが、形であるBackColorのような背景色の意味を持つ場合もあります。 ご覧のとおり、追加のパワーBorderStyleのコードンに要素の色を指定できます。これは、Noneの意味をロックする場合と同じです。

    また、パネルには境界を超える要素が多数含まれる可能性があるため、AutoScrollのパワーをtrueに設定することで、スクロールするパネルを作成できます。

    フォームとして、GroupBoxとPanelには要素のコレクションを含めることができ、要素をコンテナに動的に追加することもできます。 たとえば、フォームにはGroupBox要素があります。これはgroupBox1の場合があります。

    Private void Form1_Load(object sender、EventArgs e)
    {
    ボタンhelloButton=NewButton();
    helloButton.BackColor = Color.LightGray;
    helloButton.ForeColor = Color.Red;
    helloButton.Location =新しいアイテム(30、30);
    helloButton.Text="こんにちは";
    groupBox1.Controls.Add(helloButton);
    }
    要素のレイアウトをコンテナーに挿入するには、Point:new Point(30、30);構造体を使用します。これは、X軸とY軸に沿ってコンストラクターに渡されます。

    トップレベルのコンテナがフォームであり、groupBox1要素自体がフォーム要素のコレクションに含まれていることを確認する必要がある場合。 私はbazhannyaの後ろにyogoを見ることができました:

    This.Controls.Remove(groupBox1);
    FlowLayoutPanel
    FlowLayoutPanel要素はPanelクラスに折りたたまれるため、すべての権限が折りたたまれます。 ただし、追加機能を追加します。 したがって、この要素を使用すると、フォームの変更時刻の変更時とプログラムの終了時に、子要素の位置とレイアウトを変更できます。

    FlowDirectionエレメントのパワーにより、FlowDirectionエレメントを直接、どの方向に設定することができます。 子要素。 ロックの背後にあるLeftToRightの値-要素が左上端の方向にゆっくりと回転するようにします。 右利きの手順。 この力は、次の意味も持つことができます。

    • RightToLeft –要素は右上隅から左側に回転します
    • TopDown-要素は左上隅からローミングして下に移動します
    • BottomUp-要素は左下隅に配置され、上り坂になります

    要素を配置するとき、重要な役割がWrapContentsの力を果たします。 プロモーションの裏側では、それは真実かもしれません。 これにより、FlowLayoutPanelに収まらない要素を新しい行または新しいページに転送できます。 値がFalseの場合、要素は引き継がれず、コンテナーは単純にスクロールされるため、AutoScrollの能力はtrueです。
  9. https://metanit.com/sharp/windowsforms/3.3.php

    TableLayoutPanel

    TableLayoutPanel要素もパネルを再レンダリングし、テーブルビューに子コントロールを含めることができますが、スキン要素の場合は独自の部屋があります。 部屋に複数の要素を配置する場合は、別のTableLayoutPanelコンポーネントが部屋に追加され、他の要素が部屋に配置されます。

    テーブルの列の行数を確立するために、明らかに行と列の力を勝ち取ることができます。 プロパティウィンドウ(パワー)でこれらのポイントの1つを選択したら、次のステップは列と行を設定することだと思います。

    [サイズタイプ]フィールドでは、列/行のサイズを指定できます。 利用可能な3つのオプションがあります。

    • 絶対:ピクセルの行または列の絶対サイズを設定します
    • パーセント:視覚的なサイズがウィンドウに表示されます。 フォームのガムデザインを作成する必要がある場合は、フォームのサイズを変更するときにタブの行とテーブル中央のキーイングの要素が自動的にスケーリングされるようにする必要があります。オプション自体を使用する
    • AutoSize:行の高さと列の幅は、行または列の列の最大のサイズに応じて自動的に設定されます
    値を組み合わせることもできます。たとえば、1つの列を絶対幅で固定し、他の列で幅の幅を変更できます。

    このダイアログボックスでは、行と列を追加または削除することもできます。 同時に、Visual Studioのグ​​ラフィックデザイナーは、テーブルへの変更の追加を開始しません-行とストレージの追加または追加、レイアウトの変更、フォームの変更が利用できないという事実に、閉じてから更新する必要がありますグラフィックデザインのデザイナー。

    また、たとえば、このような類似性の3行と3行の拡張(33.33%)があります。 テーブルのスキンcom_rkuにボタンが追加され、Dock=Fillに電力を供給できるようになりました。

    フォームのサイズを変更すると、行と列にボタンを配置することで、行と列が同時に自動的にスケーリングされます。

    スケーラブルなインターフェイスを作成するために手動で行うこと。

    コードの列と行の値を動的に変更できます。 さらに、すべての列はColumnStyleタイプで表され、行はRowStyleタイプで表されます。

    TableLayoutPanel1.RowStyles.SizeType = SizeType.Percent;
    tableLayoutPanel1.RowStyles.Height = 40;

    TableLayoutPanel1.ColumnStyles.SizeType = SizeType.Absolute;
    tableLayoutPanel1.ColumnStyles.Width = 50;
    ColumnStyleとRowStyleでサイズを設定するには、SizeTypeの累乗を設定し、SizeTypeの1つの名前の変更の値を設定します。

    TableLayoutPanelコンテナに要素を追加することには、独自の特性があります。 攻撃的なフリーミドルにヨガを追加することも、テーブルのミドルをわかりやすい順序で表示することもできます。

    ボタンsaveButton=NewButton();
    //次の午後半ばにボタンを追加します
    tableLayoutPanel1.Controls.Add(saveButton);
    //コミッショナリーにボタンを追加します(2,2)
    tableLayoutPanel1.Controls.Add(saveButton、2、2);

    このようにして、クローゼットにボタンを追加します。このボタンは、3列目と3列目に固定されます。 確かに、行と行があまりないため、システムは追加に必要な中間を自動的に選択します。

  10. https://metanit.com/sharp/windowsforms/3.4.php

    コンテナ内の要素とその位置を拡張する



    ポジション
    スキンコントロールの場合、要素の左上隅の座標をコンテナに割り当てる場合と同様に、ロケーションパワーを割り当てることができます。 ツールバーからフォームに要素を転送すると、権限が自動的に復元されます。 当局の裁量でエールポティム、要素の位置の座標を手動で修正することができます:

    コード内の要素の位置を設定することもできます。

    1
    2
    3
    4
    private void Form1_Load(object sender、EventArgs e)
    {
    button1.Location = NewPoint(50、50);
    }
    拡張機能のインストール
    サイズの追加の力については、要素のサイズを設定できます。

    MaximumSizeとMinimumSizeの累乗に追加すると、最小サイズと最大サイズを設定できます。

    コードのパワーの設定:

    1
    2
    3
    4
    button1.Size =新しいサイズ(幅= 50、高さ= 25);
    //okremoのパワーを設定します
    button1.Width = 100;
    button1.Height = 35;
    パワーアンカー
    要素を配置する機能が追加され、アンカーパワーの重要性が考慮されます。 電力は、要素の一方の側とコンテナのもう一方の側の間にあります。 コンテナを操作するときに、コンテナを引き離すことができれば、同時に、要素のアタッチメントが引き出されます。

    スキン要素のロックの後ろで、あなたは何を知っていますか、その力はより強いです上、左:

    Tseは、フォームを左または上り坂に伸ばすことを意味します。その後、フォームが表示されるように、要素は左から保存され、要素の上部の境界線はコンテナの境界線に保存されます。

    パワーまたはそれらの組み合わせに可能な限り多くの値を設定できます:

  11. たとえば、protilezhneの権限の意味を変更すると(Bottom、Right)、要素の右側と下部とフォームの間に不変の位置があります。

    同時に、権限がコンテナの真ん中で安全であり、形成されないことを指定する必要があります。 したがって、フォームにPanel要素があり、ボタンがPanelで波立たせられているため、ボタンは、フォームではなく、Panel間の変更に置き換える必要があります。 フォームの拡張は、Panelコンテナに注がれるよりも少しだけ多く注ぐのに適切な場所になります。

    コードの能力を設定するには、AnchorStylesの翻訳に勝つ必要があります。

    1
    2
    3
    button1.Anchor = AnchorStyles.Left;
    //値の組み合わせを設定します
    button1.Anchor = AnchorStyles.Left | AnchorStyles.Top;
    パワードック
    Dockのパワーにより、コンテナの右側に要素をアタッチできます。 ロックの背後では、値はNoneですが、次の5つの値を設定することもできます。

  • 上:要素がコンテナの上部にプッシュされます
  • 下:要素はコンテナの下の境界線に押し付けられます
  • 左:要素がコンテナの左側にプッシュされます
  • 右:要素はコンテナの右側に取り付けられています
  • 塗りつぶし:要素はコンテナの全領域を塗りつぶします
  • https://metanit.com/sharp/windowsforms/3.5.php

    タブコントロールTabControlおよびSplitContainer



    TabControl

    TabControl要素を使用すると、複数のタブを持つキーマップ要素を作成できます。 Іスキンタ​​ブは、ボタン、テキストフィールド、intなどの他のコントロール要素のセットを保存します。 スキンタブはクラスで表されます TabPage.

    電源を使用してTabControl要素のタブをカスタマイズするには TabPages。 TabControl要素がツールバーからフォームに転送されると、ロックの背後に2つのタブ(tabPage1とtabPage2)が作成されます。 追加のPowerTabPagesに変更してみましょう。

    そのタブビューを編集/追加する必要があります。

    スキンタブは一種のパネルであるため、他の重要な要素を追加したり、タイトルをナビゲートしたりして、タブ間を移動できます。 見出しのテキストは、ヘルプテキストの後に設定されます。

    コードでタブを使用してカーブする
    新しいタブを追加するには、Addメソッドの背後にあるtabControl1.TabPagesコレクションを作成して追加する必要があります。

    //タブを追加します
    TabPage newTabPage = new TabPage();
    newTabPage.Text="大陸";
    tabControl1.TabPages.Add(newTabPage);
    ビジョンはそれと同じくらい簡単です:

    //タブを表示
    //インデックスの後
    tabControl1.TabPages.RemoveAt(0);
    //オブジェクト別
    tabControl1.TabPages.Remove(newTabPage);
    コレクションtabControl1.TabPagesのOtrimuyuにはタブインデックスが必要です。簡単に操作できます。

    //権限の変更
    tabControl1.TabPages.Text="最初のタブ";
    SplitContainer
    SplitContainer要素を使用すると、2つのスプリッターパネルを作成できます。 スプリッターの位置を変更することにより、これらのパネルのサイズを変更できます。

    勝利力オリエンテーション、フォームのスプリッターに水平または垂直に取り付けることができます。 この場合、HorisontalとVerticalの値を増やす力は明らかです。

    たとえば、スプリッターの位置を変更する必要がある場合は、IsSplitterFixedのパワーをtrueに設定できます。 この順序では、スプリッターは固定されているように見え、その位置を変更することはできません。

    略語の場合、フォームやサウンドを拡張すると、スプリットコンテナの両方のパネルの拡張も変更されます。 ただし、1つのパネルに対して、固定幅(スプリッターの垂直方向)または高さ(スプリッターの水平方向)を固定できます。 そのために、SplitContainer要素のパワーをFixedPanelに設定する必要があります。 パネルの意味が満たされているので、それを修正する必要があります:

    コード内のスプリッターの位置を変更するには、SplitterDistanceパワーを使用して、SplitContainerの左端または上端からのピクセル単位でスプリッターの位置を設定できます。 また、SplitterIncrementの追加の機能として、追加の矢印キー用にスプリッターが1時間半移動するかぎ針編みを設定できます。

    2つのパネルのいずれかを接続するには、Panel1CollapsedまたはPanel2Collapsedのパワーをtrueに設定できます。

  • https://metanit.com/sharp/windowsforms/4.1.php

    Elementi keruvannya

    データの入力を考慮に入れ、さまざまなサブディビジョンに影響を与えることができるビジュアルクラスの制御要素。 すべての制御要素はControlクラスに低下しているため、電力が低下している可能性があります。

    • アンカー:要素がどのように引っ張られるかを示します
    • BackColor:要素の背景色を設定します
    • BackgroundImage:要素の背景画像を表示します
    • ContextMenu:マウスの右ボタンで要素をクリックしたときに表示されるコンテキストメニューではありません。 ContextMenu要素の助けを求める
    • カーソル:要素にカーソルを合わせたときにマウスカーソルがどのように表示されるかを指定します
    • ドック:フォーム上の要素のレイアウトを設定します
    • 有効:要素をWikiで使用できるかどうかを指定します。 値がFalseの場合、要素はブロックされます。
    • フォント:要素のテキストのフォントを設定します
    • ForeColor:フォントの色を設定します
    • 場所:キー要素の左上隅の座標を表示します
    • 名前:Im'ya element keruvannya
    • サイズ:要素サイズを表示
    • 幅:要素の幅
    • 高さ:要素の高さ
    • TabIndex:Tabキーを押して、要素をトラバースする順序を指定します
    • タグ:この制御要素に関連付けられた値を保存できます
    ボタン
    最も一般的な制御要素はボタンです。 ボタンの圧力の下でObroblyayuchi、私たちはそれらのchiіnshіdіїを働かせることができます。

    Visual Studioエディターでフォームのボタンをクリックすると、クリッククリックハンドラーのコードにドラッグされます。このコードは、クリックするとクリックされます。

    Private void button1_Click(object sender、EventArgs e)
    {
    MessageBox.Show( "Hello World");
    }
    ボタンの装飾
    ボタンのzvnіshnіshnіshnіshnіshnіmіbrannyamを大切にするために、あなたは力を勝ち取ることができます フラットスタイル。 次の意味をとることができます。

    • フラット-ボタンがフラットに見える場合があります。
    • ポップアップ-ボタンにカーソルを合わせるとボタンが大きく見えますが、他の方法ではフラットに見えます
    • 標準-最大の視認性を実現するボタン(ロック用)
    • システム-オペレーティングシステムにデポジットするボタンのタイプ
    ボタンの画像
    キーの豊富な要素については、ボタンの場合、BackgroundImageの画像を設定できます。 ただし、ボタン上のテキストと画像の配置を変更することもできます。 TextImageRelationの力を勝ち取る必要があるのは誰か。 Vononabuvaє前進する意味:
    • オーバーレイ:テキストが画像にオーバーレイされます
    • ImageAboveText:テキストの上の画像
    • TextAboveImage:画像の上のテキスト
    • ImageBeforeText:テキストの前の画像
    • TextBeforeImage:テキストは画像の前に配置されます
    たとえば、画像ボタンの場合。 ボタンを選択し、[画像]フィールドの電源を押します(BackgroundImageから外れないようにしてください)。 挿入する画像のダイアログボックスが表示されます。

    [ローカルリソース]オプションを選択して[インポート]ボタンを押すと、画像ファイルを選択するためのダイアログボックスが表示されます。

    画像を選択すると、ボタン上の画像の位置が考慮されるため、ImageAlignパワーを設定できます。

    9つのオプションがあり、ボタンの曲側に画像を添付することができます。 ここでロックの背後にある意味を残しましょう-中央に配置されているMiddleCenter。

    次に、新しいImageBeforeText値に設定されているTextImageRelationの機能に移りましょう。 その結果、ボタンに画像が書き込まれた直後に、ボタンを削除します。

    キー スウェーデンのアクセス
    フォームを操作するときは、クイックアクセスのキーを使用してキーボードを手動で押します。 キーボードを押すと、キーの組み合わせ+同じ文字で同じボタンが呼び出されます。 たとえば、現在のボタンにテキストのパワーを設定します。これは優れたアバターです。 最初の記号(アンパサンド)は、持ち上げられるかのように、その文字を示します。 tsomuでvipadkuはアバターのように見えるbudeを書きました。 今私は 表彰台クリック Alt+Aキーの組み合わせをクリックするだけで十分です。

    ロックボタン
    すべての制御要素が配置されているフォームには、ボタンがロックとして認識され、そのボタンがクリックされるという力があります。

    たとえば、AcceptButtonフォームの機能により、Enterキーの押下を処理する方法として標準ボタンを認識できます。

    同様に、タッチボタンを割り当てるため、CancelButtonフォームの機能が発揮されます。 このようなボタンを割り当てたら、Escキーを押してクリックできます。

  • https://metanit.com/sharp/windowsforms/4.2.php

    ラベル
    読むためだけにアクセスできる単純なテキストをフォームに表示するには、Label要素を使用します。 ラベルテキストを設定するには、Text要素のパワーを設定する必要があります。

    リンクラベル
    特別なタイプのバッジは、LinkLabel要素で表されます。これらの要素は、標準のWebページに配置されたメッセージと同様のメッセージを表示するために指定されています。

    • ActiveLinkColorの力は、押されたときの力の色を決定します
    • LinkColorの力は、まだ移行が行われていない猛攻撃前の強さの色を設定します
    • VisitedLinkColorの力は、すでに遷移しているメッセージの色を設定します
    特定の要素にLinkBehaviorのパワーを設定して、原則として、リクエストの動作であるLinkBehaviorのパワーを指定できます。 Tsyaパワーはいくつかの可能な意味を獲得します:
    • SystemDefault:強制するためにシステム設定がインストールされます
    • AlwaysUnderline
    • HoverUnderline:メッセージはマウスにカーソルを合わせたときにのみ表示されます
    • NeverUnderline
    ちなみに、この要素のすべてのテキストは当局によって尊重されています。 ただし、LinkAreaの追加機能のために、リンクの領域を変更できます。 たとえば、最初の6文字は含めたくありません。 開始要件を設定した対象:

    圧力をかけて遷移を確認するには、コードを追加で記述する必要があります。 このコードは、LinkLabel要素と同様に、LinkClickedサブの処理を担当します。 たとえば、linkLabel1と呼ばれ、フォースを復讐するフォースの要素をフォームに設定しましょう。

    パブリック部分クラスForm1:フォーム
    {
    パブリックフォーム1()
    {
    InitializeComponent();
    //pod_obrobnikを設定します
    linkLabel1.LinkClicked + = linkLabel1_LinkClicked;
    }

    Private void linkLabel1_LinkClicked(オブジェクト送信者、LinkLabelLinkClickedEventArgs e)
    {
    System.Diagnostics.Process.Start( "http://metanit.com");
    }
    }
    System.Diagnostics.Process.Start()メソッドは、プロモーションの背後にあるブラウザーによってシステムにインストールされているWebブラウザーによって要求されます。

  • https://metanit.com/sharp/windowsforms/4.3.php

    テキストボックス

    テキストの導入と編集のために、テキストフィールド(TextBox要素)が割り当てられます。 したがって、Label要素と同様に、TextBox要素のテキストを挿入したり、追加の権限テキストとして使用したりできます。

    デフォルトでは、ツールバーから要素を移動すると、テキストフィールドが作成されます。 テキストフィールドに優れたコミュニケーションを表示するには、マルチラインとスクロールバーの力を強調する必要があります。 複数行権限がtrueに設定されている場合、フィールドの外側に表示されるすべての不要な文字は新しい行に転送されます。

    さらに、ScrollBarsを次のいずれかの値に設定することにより、テキストフィールドをスクロールさせることができます。

    • なし:スクロールなし(スクロールなし)
    • 水平:行がいっぱいになると水平スクロールを作成し、テキストフィールドの幅をシフトします
    • 垂直:行がテキストフィールドにネストしないように垂直スクロールを作成します
    • 両方:垂直方向と水平方向にスクロール

    オートコンプリートテキストフィールド
    TextBox要素は、オートコンプリートフィールドを作成できる場合があります。 私たちが力を結ぶ必要がある人のために AutoCompleteCustomSource TextBox要素を特定のコレクションに追加します。特定のコレクションには、指定されたフィールドが使用されます。

    次に、フォームにテキストフィールドを追加し、次の行を細分化するためのコードに記述します。

    パブリック部分クラスForm1:フォーム
    {
    パブリックフォーム1()
    {
    InitializeComponent();
    AutoCompleteStringCollection source = new AutoCompleteStringCollection()
    {
    「コバリフ」、
    「Іvaniv」、
    「ペトリヴ」、
    「クスティフ」
    };
    textBox1.AutoCompleteCustomSource = source;
    textBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
    textBox1.AutoCompleteSource = AutoCompleteSource.CustomSource;
    }
    }

    オートコンプリートモード(AutoCompleteModeの電力表現)には、いくつかの可能な値があります。

    • なし:オートコンプリートが許可されています
    • 提案:紹介のオプションを提案しますが、追加しないでください
    • 追加:リストの行に値を追加しますが、選択オプションを渡さないでください
    • SuggestAppend:1時間、入力した値を追加するオートコンプリートのオプションを提案します
    単語の翻訳
    TextBox要素のテキストが単語の後ろに折り返されるように、権限を設定する必要があります ワードラップ等しい真。 そのため、1つの単語が一列に収まらず、攻撃に転送されます。 ツァーパワー多彩なテキストフィールドの場合は、pratsyuvatiを少なくします。

    パスワード入力
    また、この要素には、パスワードを入力するための新しいフィールドを入力できるようにする機能があります。 したがって、PasswordCharとUseSystemPasswordCharをハックする必要があります。

    PasswordCharのパワーはロックできないため、任意の文字に設定すると、テキストフィールドに任意の文字を入力したときにその文字が表示されます。

    UseSystemPasswordCharの能力を制御できます。 この値をtrueに設定すると、テキストフィールドに入力された文字の代わりに、パスワードの符号が表示され、システムで受け入れられます(ピリオドなど)。

    Podiya TextChanged
    TextBox要素の最後のサブは、要素のテキストを変更するときに使用されるTextChangedサブに設定する必要があります。 たとえば、crimテキストフィールドの形状のラベルを変更して、テキストフィールドのテキストを変更すると、ラベルのテキストも変更されるようにします。

    パブリック部分クラスForm1:フォーム
    {
    パブリックフォーム1()
    {
    InitializeComponent();

    TextBox1.TextChanged + = textBox1_TextChanged;
    }

    Private void textBox1_TextChanged(object sender、EventArgs e)
    {
    label1.Text = textBox1.Text;
    }
    }

  • https://metanit.com/sharp/windowsforms/4.4.php

    MaskedTextBox要素

    MaskedTextBox要素は、実際には通常のテキストボックスを表します。 ただし、この要素を使用すると、koristuvachの導入を制御し、恩赦の存在を自動的に再確認できます。

    フィールドに入力する文字を制御するには、マスクを設定する必要があります。 マスクを作成するには、次の記号をひねります。

    • 0:追加の番号を入力できるようにする
    • 9:数字と確率を入力できます
    • #:数字、確率、記号「+」と「-」を入力できます
    • L:追加のリテラル文字を入力できます
    • ?:オプションの非言語リテラル文字を入力できます
    • A:文字や数字を入力できます
    • 。:全体とショット部分のスプリッターの位置を設定します。
    • 、:数の全体でのサブ行の勝利。
    • :: 1時間間隔のVikoristovuetsya-年を分割し、その2番目のhvilini
    • /:サブデートの勝利
    • $:通貨記号としてのウィンク
    マスクを設定するには、マスク要素のパワーを設定する必要があります。 ポーパーティーの力を知って、新しいものを押して、標準のマスクテンプレートの1つを設定するためにそれを想像します。 したがって、電話番号の代わりに、テキストボックスに入力したものと同じ電話番号を選択できます。

    これで、起動時に、電話番号を残して、テキストフィールドに複数の番号を入力できます。

    さあ、マスクをつけましょう。 たとえば、テキストフィールドに父親の名前と老人の名前に従って名前のイニシャルを入力するためのマスクを作成しましょう。 マスクの力は誰にとってL.L.L?????????を意味すると思いますか。 次に、テキストフィールドのエントリは次のようになります。

    この要素は、導入を制御するために使用できるいくつかの権限も表します。 したがって、trueに設定した場合のBeepOnErrorの能力は ビープ間違った文字を入力したp_d時間。

    テキストフィールドが入力されたときにtrueに設定された場合のHidePromptOnLeaveの能力は、フォーカスがPromptCharに設定されます。

    PromptCharのパワーは、入力文字スペースに表示される文字を示します。 城の後ろには安心のしるしがあります。

    Trueに設定されたAsciiOnlyパワーを使用すると、A〜Zおよびa〜zの範囲の文字などのasci文字のみを入力できます。

  • https://metanit.com/sharp/windowsforms/4.5.php

    ラジオボタンとチェックボックスの要素

    チェックボックス
    CheckBox要素は、チェックされているか設定されていないかの2つの値のいずれかを設定するための割り当てのフラグです。 エンサインを設定するには、権限Checkedをtrueに設定する必要があります。

    CheckBox要素のチェックされた権限制限-チェック状態権限。これにより、エンサインの3つの状態のいずれかを設定できます-チェック済み(値)、不確定(エンサインが割り当てられていない-注記されている、または非アクティブ状態にある)、およびチェックされていない(非アクティブ状態)記載されていません)

    また、AutoCheckの権限を設定します-それがfalseである可能性がある場合、エンサインを変更することはできません。 プロモーションの背後にあるのは本当かもしれません。

    変更時に、私はワインのプロポーションになり、CheckedChangedサブドメインを生成します。 Obroblyayu tsyupodіyu、私たちは変更を取り除くことができますensignとrobitisevnidії:

    Private void checkBox_CheckedChanged(object sender、EventArgs e)
    {
    CheckBox checkBox =(CheckBox)送信者; //ガイドをCheckBoxタイプの要素に移動します
    if(checkBox.Checked == true)
    {
    MessageBox.Show( "Ensign" + checkBox.Text + "now set");
    }
    そうしないと
    {
    MessageBox.Show( "Ensign" + checkBox.Text + "no values now");
    }
    }
    ラジオボタン
    CheckBox要素には、同様のRadioButton要素またはジャンパーがあります。 スイッチはグループに配置されており、1つのスイッチを含めることは、決定を含めることを意味します。

    ジャンパーにスタンを取り付けるには、電源チェックを真にする必要があります。

    選択可能なジャンパーのグループを作成するには、GroupBox要素やPanel要素などのコンテナーに一連のジャンパーを配置する必要があります。 送信機。 さまざまなコンテナにあるものは、さまざまなグループに追加されます。

    同様のランクで、グループ内の順列を変更して、CheckedChangedサブディビジョンを形成できます。 グループの革のジャンパーをこのポッドの1つのサンプルにリンクすることで、そのジャンパーを取得できます。これは、特定の瞬間の呼び出しです。

    Private void radioButton_CheckedChanged(object sender、EventArgs e)
    {
    //ガイドをRadioButtonタイプの要素にカーソルを合わせます
    RadioButton radioButton =(RadioButton)送信者;
    if(radioButton.Checked)
    {
    MessageBox.Show("選択しました"+ radioButton.Text);
    }
    }

  • https://metanit.com/sharp/windowsforms/4.6.php

    リストボックス

    ListBox要素は単なるリストです。 この要素の主な力はアイテムの力であるため、リスト内のすべての要素を選択できます。

    営業時間になるとすぐに要素をリストに追加できるので、i プログラムで。 Visual Studioでは、ListBox要素のプロパティ(パワー)で、アイテムのパワーを知ることができます。 地下鉄が電源にガタガタと音を立てた後、ウィンドウにそれが表示され、要素がリストに追加されます。

    空のフィールドの場合、リストの1つの要素(スキン行ごとに1つ)が入力されます。 その後、私たちが追加したすべての要素がリストに追加され、それらを管理できるようになります。

    リストボックスからプログラムでアイテムを選択する
    要素の追加
    Otzhe、リストのすべての要素は、コレクションとしてアイテムの力に含まれています。 コレクション、つまりリストに新しいアイテムを追加するには、次のようにAddメソッドを選択する必要があります。listBox1.Items.Add( "New item"); このメソッドを使用すると、追加されたスキン要素がリストの最後に追加されます。

    配列などの要素を散りばめたものを追加できます。 AddRangeメソッドが使用される対象:

    文字列の国=( "ブラジル"、 "アルゼンチン"、 "チリ"、 "ウルグアイ"、 "コロンビア");
    listBox1.Items.AddRange(countries);
    要素の挿入
    単純な追加の観点から、挿入は、ヘルプメソッドInsertの後のリストの最初のインデックスの後に配置されます。

    ListBox1.Items.Insert(1、 "パラグアイ");
    このビューでは、リスト内の別の位置に要素を挿入して、指定された位置がゼロから始まるようにします。

    要素の表示
    テキストの背後にある要素を削除するには、Removeメソッドを使用します。

    ListBox1.Items.Remove( "Numbers");
    リスト内のインデックスの背後にある要素を削除するには、RemoveAtメソッドを使用します。

    ListBox1.Items.RemoveAt(1);
    さらに、Clearメソッドを呼び出すことにより、リスト全体を一度にクリアできます。

    ListBox1.Items.Clear();
    リストの要素へのアクセス
    Vykoristovuyuchi要素インデックス、あなたはリストに要素を入れることができます。 たとえば、リストの最初の要素を考えてみましょう。

    文字列firstElement=listBox1.Items;
    Countメソッドを使用すると、リスト内の要素の数を割り当てることができます。

    Int番号=listBox1.Items.Count();
    リスト内のアイテムを見る
    リストの要素が表示されると、インデックスと表示された要素自体の両方を介してそれらを管理できます。 ListBox要素のそのような力の助けを借りて要素を見ることができます:

    • SelectedIndex:表示されたリストの番号を回転または挿入します。 その日の要素を見る方法、同じパワーは-1の値を持つかもしれません
    • SelectedIndices:表示されている要素のコレクションを回転するか、選択したインデックスのセットに設定します
    • SelectedItem:見たアイテムのテキストを回転または挿入します
    • SelectedItems:選択したコレクションに表示されているアイテムを回転または挿入します
    注意として、リストは1つの要素の目撃をサポートします。 いくつかの要素を表示する機能を追加するには、SelectionMode値をSelectionModeパワーでMultiSimpleに設定する必要があります。

    プログラムで要素を表示するには、SetSelected(int index、bool value)メソッドを呼び出します。ここで、indexは表示された要素の番号です。 別のパラメータ値がtrueの場合、指定されたインデックスの背後にある要素が表示されます。falseの場合、視覚化はすぐに受信されます。

    ListBox1.SetSelected(2、true); //3番目の要素が表示されます
    選択した要素のビューをキャプチャするには、ClearSelectedメソッドを使用します。

    Podiya SelectedIndexChanged
    リストボックス要素には、SelectedIndexChangedサブアイテムの前にリストボックスが必要です。これは、表示されているアイテムを変更した結果です。

    パブリック部分クラスForm1:フォーム
    {
    パブリックフォーム1()
    {
    InitializeComponent();

    文字列の国=( "ブラジル"、 "アルゼンチン"、 "チリ"、 "ウルグアイ"、 "コロンビア");
    listBox1.Items.AddRange(countries);
    listBox1.SelectedIndexChanged + = listBox1_SelectedIndexChanged;
    }

    Void listBox1_SelectedIndexChanged(object sender、EventArgs e)
    {
    文字列selectedCountry=listBox1.SelectedItem.ToString();
    MessageBox.Show(selectedCountry);
    }
    }
    要素を選択する場合は、表示されている要素を使用してリストを再確認する必要があります。

    comboBox1.Items.AddRange(new string( "Uruguay"、 "Ecuador"));
    //単一の位置ごとに1つの要素を追加します
    comboBox1.Items.Insert(1、 "ボリビア");
    Add / AddRangeメソッドを追加すると、すべての新しい要素がリストに配置されます。 ただし、ComboBoxをpower Sortedにtrueに設定すると、追加時に並べ替えが自動的に実行されます。

    要素の表示:

    //1つの要素をレンダリングします
    comboBox1.Items.Remove( "Argentina");
    //インデックスの後に要素を表示
    comboBox1.Items.RemoveAt(1);
    //すべての要素を表示
    comboBox1.Items.Clear();
    インデックスの背後にある要素を取得して、別の方法で処理することができます。 たとえば、ヨガを変更します。

    ComboBox1.Items="パラグアイ";
    ComboBoxのデザインをカスタマイズする
    低電力の助けを借りて、コンポーネントのスタイルを微調整することができます。 したがって、DropDownWidthの累乗は、ドロップダウンリストの幅を設定します。 DropDownHeightの追加機能として、リストの高さを設定できます。

    MaxDropDownItemsのもう1つの機能により、リストに表示されるアイテムの数を1から100まで設定できます。ロックの場合、その数は8です。

    より強力なDropDownStyleは、ComboBoxのスタイルを設定します。 あなたは3つの可能な意味を取ることができます:

    • ドロップダウン:封鎖に勝ちます。 テキストフィールドに値を入力するか、要素の右側にある矢印の付いたボタンをクリックすると表示されるオプションのリストを入力できます。リストが表示され、可能なものを選択できます。オプション
    • ドロップダウンリスト:ドロップダウンリストをドロップするには、要素の右側にある矢印の付いたボタンをクリックする必要があります
    • シンプル:ComboBoxは、キーボードのキーを上下にスクロールしてアイテム間を移動できるシンプルなテキストボックスです。

    Podiya SelectedIndexChanged
    ComboBoxの最も重要なサブはSelectedIndexChangedサブでもあり、リストから項目を選択できます。

    パブリック部分クラスForm1:フォーム
    {
    パブリックフォーム1()
    {
    InitializeComponent();

    ComboBox1.SelectedIndexChanged + = comboBox1_SelectedIndexChanged;
    }

    Void comboBox1_SelectedIndexChanged(object sender、EventArgs e)
    {
    文字列selectedState=comboBox1.SelectedItem.ToString();
    MessageBox.Show(selectedState);
    }
    }
    ここでも、SelectedItemの力が選択された要素に与えられます。

  • 今、私たちの最初の素晴らしい追加を作成する時が来ました。
    この部分で見られる重要なもの:
    拡大されている補遺は小さな形になります、それは私がずっと前に発明されたプログラムの考えを繰り返します:形には食べ物があります""。 ブラウザをボタンに向けようとすると「 とてもクール!あなたはいつも私たちをチェックします。 ボタンを押す " やああなたは何にも囲まれません。


    このプログラムを作成すると、すべてのサプリメントの作成の主な原則を見ることができます C#、そしてそれらが固有の目標であるかどうかにかかわらず、それらの助けを借りて実装の方法をナビゲートします。

    新しいプロジェクトを作成し、プログラムをテンプレートとしてインストールします Windowsフォーム、少し1に示すように:
    1.新しいプロジェクトの作成。
    プロジェクトに名前を付ける RandWindowボタンを押します わかった.

    働くvikno MS Visual Studio追加の失効の開始を復讐するために(図2)。

    2.追加のウィンドウ。
    少数の数字では、次のようにマークされています。

    1. ヴィクノ ツールボックス(制御要素のパネル)-作成中のフォームに配置できる制御要素。

    2. ヴィクノ ソリューションエクスプローラー(Oglyadachの決定)-ここであなたはそのような結び目を作ることができます: プロパティ-プロジェクトの調整、 リンク(Possilannya)-ライブラリプロジェクトへの接続、および外部コード(拡張子付き)のファイルのプロジェクトへの作成と接続 .cs)およびドラフトフォームに接続されています(たとえば、 Form1).

    3. ヴィクノ クラスビュー(Vіknoクラス)–ここではプログラムクラスのすべての作成を見ることができます。

    4. ヴィクノ プロパティ(パワー)-カービングまたはフォームの作成の要素があるかどうかを選択すると、このオブジェクトのすべてのパラメーターを計算したり、ロックに設定された値を変更したりできます。

    ウィンドウプログラムの作成は、必要なすべてのダイアログウィンドウが作成され、必要な要素が配置されるまで実行されます。 Nadali mi nalashtovuemo podia、 それらをcoristuvachemにする、ロボットプログラムのそのnalashtovuemo技術的側面。 私たちの頭の中では、必要なすべてのコントロール要素をヘッドフォームに配置し、その後、マウスを移動するためのコントロールとボタンを押すためのコントロールを追加します。

    フォームに新しい要素を追加する

    その後、プロジェクトの名前を入力し、必要なテンプレートを挿入してボタンを押しました わかった, MS Visual Studioウィンドウプログラムのフレームを自動的に作成し、その後、新しいウィンドウ要素を追加できます。

    ツールウィンドウから必要なウィンドウ要素をドラッグする必要がある場合( ツールボックス).

    私たちのviknuのニーズ 2 入力フィールドの要素。マウスの入力の座標が表示され、プログラムの動作を理解しやすくなります。

    ウィンドウの中央に、要素の助けを借りて作成したものが書き込まれます ラベル.
    底は縫い付けられます 2 ボタン。

    Trochはviknaのワークピースを伸ばします。 右ボタンで新しいものを押すと、次のように表示されます コンテキストメニュー。 権限のポイントを押すために新しいものを持ってください、あなたがウィンドウのパラメータを変えることができるならば、あなたはそれを変えることができます。 少しの3つの画像の場合、最も(原則として)必要な権限:
    図3.C#.NETのウィンドウ(フォーム)のさまざまな電力レベル。
    窓のワークピースを伸ばすためにトローチし、必要なすべての要素を追加します。 小さな4のためにあなたは窓でそれらを平手打ちすることができます ツールボックス:

    赤ちゃん4.ツールボックスの幅要素を折りたたんだ形状にドラッグアンドドロップします。

    行の当局に行きます Label1テキストを「 あなたは最高の光を作るために働きますか?"。 また、権限がわかっているフォントタイプを変更します フォント(図5)。
    5.Label要素の権限フォント。
    フォントタイプを設定した後 タホマ、フォント幅 大胆なとrozmirは等しい 16 (図6)。

    図6.フォントの調整。
    ボタンのテキストを変更できる、バイコリストパワー 文章.

    Otrimanのワークピースvyknaプログラムは次のようになります(図7)。

    図7.形状は次のようになります。

    ロボットプログラムの技術的部分

    1. 手の甲には、マウスの動きのサンプルと座標の実現可能なビューがあります。 バツі y入力フィールドの2つの作成。
    2. マウスのスキンキーをガタガタ鳴らす機能を作りましょう(特にコードのストラップはボタンで使用できます」 とてもクール!»).
    3. ウィンドウが正しい方向に移動する方法を実装するコードを提供して、カーソルがボタンに近づくようにします« とてもクール!».

    フォームによるマウスの重要な動き

    作成中のプログラムのフォームの一部を無差別にクリックします( いいえ要素の1つ)。

    次に、マウスの右ボタンをクリックして、フォームのパワーに移動します。 -> コンテキストメニュー 権限.

    今、可能なポディアのリストに行く必要があります、yakіは勝利を収めることができます。 ボタンをクリックしてください イベント"(Podії)、小さな8に示されているように:
    8.可能なエントリのリストに移動します。
    koristuvachがマウスをウィンドウに転送する場合、 オペレーティング·システムインジケーターの現在の座標を使用してプログラムにヘルプを送信します。 悪臭を放つ必要があります。

    obrobniktsієїpodіїを認識するために、行を知ってください MouseMove(小さい9)、その後、フィールドのクラッターが右利きになり、マウスの手のコピーが自動的に提供され、機能が提供されます。 Form1_MouseMove私たちのプログラムのコードで。
    図9.右クリックすると、右手MouseMoveが行に表示され、関数コンピューターのコードへの遷移が自動的に作成されます。
    この関数に2行を追加して、コードが次のようになるようにします。

    / * http:// website、Anvi * / private void Form1_MouseMove(object sender、MouseEventArgs e)(// X座標を行に移動し、入力フィールドに書き込みますtextBox1.Text = e.X.ToString();//移動します入力フィールドに書き込む行のY座標textBox2.Text=e.Y.ToString();
    フォームの上にあるマウスインジケーターのサブムーブを変換するこの関数は、 2 パラメータ:オブジェクトwdRunnerとインスタンスからクラス MouseEventsArgs、ターゲットの目的地と他の現在の当局の座標に関する情報を復讐するため。

    textBox1і textBox2クラスのceインスタンス テキストボックス、これは入力フィールド要素によって実装されます。

    これらのインスタンスのメンバー 文章これらのフィールドにテキストを挿入できます。

    このランクでは、プログラムをコンパイルする必要があります( F5)、ウィンドウのフォームの後ろにマウスのインジケーターを移動すると、インジケーターの座標(フォームの中央)が残り、中断することなく変更されます。

    それでは、フォームの準備に移りましょう。 特別なブックマークをクリックする人 (Form1.cs [コンストラクター])、少し10に示すように:
    10. C#フォームコンストラクターにジャンプします。
    最初のボタンをクリックして地下鉄を作成します。 Visual Studio押されたときにボタンを処理するためのコードを自動的に追加します。

    コードに次の行を追加します。

    / * http:// website、Anvi * / private void button1_Click(object sender、EventArgs e)(//「You'rein」というテキストでメッセージを表示しますMessageBox.Show( "You're in !!"); //アプリケーションを終了します。Exit();)
    次に、コンストラクターに戻り、友達にボタンを押して、それをフローティングクリックできるようにします。

    / * http:// website、Anvi * / private void button2_Click(object sender、EventArgs e)(//「購入を躊躇しませんでした」というテキストを使用してメッセージを入力します//別のパラメータはタイトルですメッセージウィンドウ"Uvaga"//MessageBoxButtons.OK-通知フォームのボタンの種類//MessageBoxIcon.Information-通知の種類-マチマ「情報」アイコンと可聴音MessageBox.Show("私たちはあなたのことを躊躇しませんでした重要なリクエスト"、" Uvaga "、MessageBoxButtons.OK、MessageBoxIcon。情報);
    バカイトのように、mi trochsは、それがどのように機能するかを示すために、毎週の欠員情報のコードを折りたたんでいます。 関数に渡される口ひげパラメータ 公演終了コードでコメントアウトしました。

    これで、マウスがボタンに近づいた瞬間のウィンドウの動きに気付かなくなりました。 とてもクール».

    どのmidodamoに対して、関数のコード:

    プライベートボイドForm1_MouseMove(オブジェクト送信者、MouseEventArgs)

    原理はさらに単純です。マウスの手の座標を考慮して、ボタンをわずかなマージンで命名する正方形の悪臭に入らないように変更します。 もしそうなら、ウィンドウを移動するための勝利となる2つの10進数を生成します。

    マウスインジケーターをボタンに向けることを通知することもできますが、特別な圧力をかけずにcoristuvachがボタンに押されたリンクで、記念のぼかしが表示されるため、カーソルをボタンの近くのゾーンに置くだけです。ボタン。

    だから私たちはデシュチョを声に出す必要があります」 労働者「Smіnnih、yakі私たちは勝利を与えるでしょう。

    直立した数の生成

    クラス ランダムC#єpseudovipad番号のジェネレータ-tobto。 このクラスは、vipadkovnostiの統計的基準と一致する数列のタイプで区別されます。

    Random rnd = New Random();

    ここで、クラスのインスタンスを声に出しました ランダム (rnd)、そのようなvipadkovі番号の助けを借りて。 ナダリ私たちはコードを打ち負かします、心 rnd.(generation_range)または rnd.(からの -1 ) 引き起こす vipadic番号.

    ですから、私たちはもう少し変更を表明します、それらのいくつかはすぐに開始されます。

    Windows.Forms.SystemInformation.PrimaryMonitorSize.Width; int _h = System.Windows.Forms.SystemInformation.PrimaryMonitorSize.Height;
    tmp_locationその時のgoloshuetsya、将来のtimchasovoのschobはviknaのキャンプを救います。

    したがって、垂直シフトの場合、ウィンドウが画面の境界をはるかに超えてしまう可能性がある人について考える必要があります。

    ショブ 画面をに割り当てます C#.NET 、vikoristovuvatyします:

    / * http:// site、Anvi * / System.Windows.Forms.SystemInformation.PrimaryMonitorSize
    _hі _w初期化には課金されるため、独自の画面koristuvachに注意してください。
    この関数のコードは次のようになります。

    /*http://esate.ru、Anvi * / private void Form1_MouseMove(object sender、MouseEventArgs e)(//行のX座標を変換し、入力フィールドに書き込みますtextBox1.Text = e.X.ToString(); / / Y座標を行に変換し、入力フィールドに書き込みますtextBox2.Text = e.Y.ToString(); // X軸とY軸に沿った座標が正方形のifにあるように、「だから、素晴らしく」ボタン(e.X> 80 && e.X 100 && e.Y(_w --this.Width / 2)|| tmp_location.Y(_h --this.Height / 2))、新しく生成されたthis.Location = tmp_location;) )。
    Axis、vlasne、そしてそれだけです。 プログラムを完了したら、「それで、すごい」ボタンをクリックしてみてください。 Tseはもっと重要になります。

    最終更新日:2015年10月31日

    追加の.NETプラットフォーム用のグラフィカルインターフェイスの作成には、さまざまなテクノロジが使用されます。ウィンドウフォーム、WPF、Windowsストア用のアドオン(Windows 8 / 8.1 / 10の場合)です。 ただし、最もシンプルで便利な書類プラットフォームは、ウィンドウフォームまたはフォームです。 デンマーク語は、WinFormsの追加テクノロジと管理の主要な要素の作業のためのグラフィカルインターフェイスの作成の原則を理解するためのメタデータとして配置するのに役立ちます。

    グラフィックソフトウェアによって作成されました

    グラフィックプロジェクトを作成するには、VisualStudio開発環境が必要です。 Visual Studio 2013のバージョンはこれまでで最も拡張されているので、私が助けてくれるので、このメディアの無料バ​​ージョンを打ち負かします Visual Studio Community 2013 Yakuは、https://www.visualstudio.com/en-us/products/visual-studio-community-vs.aspxの側面にあります。

    ミドルウェアとそのすべてのコンポーネントをインストールした後、Visual Studioを起動し、グラフィックプログラムプロジェクトを作成します。 そのために、メニューで[ファイル]項目(ファイル)を選択し、サブメニューで[新規]-> [プロジェクト]([作成]-> [プロジェクト])を選択します。 私たちの前で最後に目にするのは、新しいプロジェクトを作成するための対話ウィンドウです。

    左側の列で[Windowsデスクトップ]を選択し、中央のプロジェクトタイプの中央部分で-次のように入力します Windowsフォームアプリケーションそして女性にとって、私は下のフィールドにいるようなものです。 たとえば、私たちはヨガと呼びます helloapp。 次はOKを押します。

    Visual Studioがロックの背後に作成されたファイルからプロジェクトを開いた後:

    Visual Studioの範囲のほとんどは、将来のプログラムの形をとることができるグラフィックデザイナーによって占められています。 当分の間、それは空であり、見出しForm1しかありません。 右側には、ソリューション/プロジェクトファイル(ソリューションエクスプローラー)があります。 ここでは、フォームのファイルを含む、補遺に関連するすべてのファイルを見つけることができます Form1.cs.

    下部では、右利きの人は権限のウィンドウ-プロパティとして知られています。 この時点で、私はコントロールの要素としてフォームを選択したので、フォームに関連付けられて、どのフィールドに当局が表示されます。

    これで、フォームTextの力がわかり、その意味をbe-yakelseに変更します。

    このようにして、フォームのタイトルを変更しました。 これで、フィールドに転送できるのは、ボタンなどの重要な要素です。 VisualStudioタブの左側を誰が知っていますか ツールボックス。 このタブをクリックすると、要素を含むパネルが表示されます。星を他の要素のフォームに転送できます。

    マウスのkazіvnikにїїをロードしたiボタンの中央の要素を知っているので、それをフォームに転送します。

    ツェは視覚的な部分です。 それでは、プログラミングに取り掛かりましょう。 私のC#の最も単純なコード、一種のアクティブ化およびプッシュボタンを追加しましょう。 私が罪を犯した人は誰でも、このフォームからの接続であるコードファイルに移動します。 表示するコードファイルがないため、マウスの右ボタンでフォームをクリックし、[コードの表示]メニュー(コードファイルを表示)でクリックできます。

    ただし、コードを書きすぎないように、別の方法で高速化します。 ボタンにマウスポインタを合わせ、下のクリックをクリックします。 コードファイルを自動的に消費します Form1.cs、これは次のようになります。

    システムの使用; vicorist System.Collections.Generic; System.ComponentModelを使用します。 System.Dataを使用します。 vicorist System.Drawing; System.Linqを使用します。 System.Textを使用します。 vicorist System.Threading.Tasks; System.Windows.Formsを使用します。 名前空間HelloApp(public部分クラスForm1:Form(public Form1()(InitializeComponent();)private void button1_Click(object sender、EventArgs e)())

    ボタンを押した後に通知を表示するDodamoは、次の順序でコードを変更します。

    システムの使用; vicorist System.Collections.Generic; System.ComponentModelを使用します。 System.Dataを使用します。 vicorist System.Drawing; System.Linqを使用します。 System.Textを使用します。 vicorist System.Threading.Tasks; System.Windows.Formsを使用します。 名前空間HelloApp(public部分クラスForm1:Form(public Form1()(InitializeComponent();)private void button1_Click(object sender、EventArgs e)(MessageBox.Show( "Hi");)))

    プログラムの起動

    プログラムをブートモードで実行するには、F5キーまたはVisualStudioパネルの緑色の矢印を押します。 次回、フォームがボタン自体で起動するとき。 そして、フォームのボタンを押すと、vapingに関するリマインダーが表示されます。

    プログラムを起動した後、スタジオは拡張exeファイルのファイルからヨガをコンパイルします。 プロジェクトフォルダに移動し、bin/Debugまたはbin/Releaseディレクトリに移動すると、ファイルを見つけることができます。

    プロジェクトのグラフィックサプリメントの作成について簡単に説明したので、主要なコンポーネントと、もちろんフォームの概要に進むことができます。

    ©2022androidas.ru-Androidのすべて