C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

全過去ログを検索

<< 0 >>
■54776  Re[1]: AndとAndAlsoの意義
□投稿者/ shu -(2010/11/01(Mon) 22:37:17)
    2010/11/01(Mon) 23:37:24 編集(投稿者)

    No54774 (gonna さん) に返信
    > VBの話ですが、VBにはAndとAndAlsoが有りますよね。
    > AndAlsoはAndを効率化した物、And以前に偽ならば即刻偽と帰してしまうすぐれものらしいです。
    >
    > ここで一つ疑問が生まれました。
    > 「And以前に偽ならば即刻偽と帰してしまう」と云う事がどの様な状況に対しても
    > 必ず正しい事柄なら、AndAlsoという命令語は無くして、Andの内部構造をAndAlsoのものに
    > 変えてしまえばよいのではないでしょうか。
    >
    > なのにAndAlsoが存在するという事は、何か意味が在る様に思えて仕方が無いのですが、
    > 実際の所はどうなのでしょう。
    A and B => AもBも必ず評価される。つまりA,Bが関数の呼び出しであればAによる副作用と
    Bによる副作用は結果にかかわらず起こる。

    A andalso B => Aを評価してFalseならBは評価されない。つまりAの評価結果によりBによる
    副作用を発生させる事ができない。

    という違いがあります。評価による副作用がなければandの実装をandalsoにする事も出来るのでしょうけど
    前者のような組み方は出来なければならないので(それが良い方法かは別として)2つになっているのでしょう。
記事No.54774 のレス /過去ログ92より / 関連記事表示
削除チェック/

■86186  Re[8]: DateTimePickerでのクリックイベント
□投稿者/ ちょこじー -(2017/12/22(Fri) 23:08:05)
    No86185 (WebSurfer さん) に返信


    自分では明示的にアタッチ文を書いていないので、デフォルトの設定で入っていたのでしょうか・・・?

    確かにプロパティウインドウにクリックイベントは表示されていませんが、
    それはテキストボックスなどでは表示されていないにも拘わらず
    普通に使うことができます。
    何を根拠にクリックイベントを使えるかどうか判断すれば良いですか?
     
記事No.86178 のレス /過去ログ147より / 関連記事表示
削除チェック/

■86187  Re[9]: DateTimePickerでのクリックイベント
□投稿者/ WebSurfer -(2017/12/22(Fri) 23:30:04)
    No86186 (ちょこじー さん) に返信

    > 自分では明示的にアタッチ文を書いていないので、デフォルトの設定で入っていたのでしょうか・・・?

    少なくとも C# ではそんなことはないです。VB.NET では分かりません。

    > 確かにプロパティウインドウにクリックイベントは表示されていませんが、
    > それはテキストボックスなどでは表示されていないにも拘わらず
    > 普通に使うことができます。

    テキストボックスとは TextBox コントロールですよね? であれば、自分の環境ではプロパティ
    ウィンドウに Click イベントは表示されてます。DateTimePicker にはありません。

    すみませんが、今日はもう店じまいさせてください。
記事No.86178 のレス /過去ログ147より / 関連記事表示
削除チェック/

■86192  Re[9]: DateTimePickerでのクリックイベント
□投稿者/ 魔界の仮面弁士 -(2017/12/23(Sat) 08:55:45)
    2017/12/23(Sat) 14:25:13 編集(投稿者)

    No86186 (ちょこじー さん) に返信
    > 自分では明示的にアタッチ文を書いていないので、デフォルトの設定で入っていたのでしょうか・・・?

    DateTimePicker1_Enter などといったイベントハンドラーをアタッチする場合、
    C# の場合はオブジェクトに対してイベントハンドラを += で割り当てる言語仕様ですが、
    VB の場合は逆で、イベントハンドラに対してオブジェクトを割り当てる言語仕様です。


    具体的には、Visual Basic の場合

      Private Sub DateTimePicker1_Enter(sender As Object, _
         e As EventArgs) Handles DateTimePicker1.Enter

    のように、末尾に『Handles 対象オブジェクト.イベント名』の宣言があり、
    これによってイベントのアタッチが行われるということです。

    この Handles 句による割り当ては、Visual Studio によって自動的に行われます。


    また、たとえばこれを、『Handles DateTimePicker1.Enter, DateTimePicker2.Enter』とすれば
    DatePicker1 と DatePicker2 の両方のイベントを一か所にまとめることさえできます。

    引数の型に互換性があれば、異なる種類のコントロールやイベントをまとめることもできますので
     Sub Hoge(sender As Object, e As EventArgs) Handles Button1.Click, TextBox1.TextChanged
    などといったことさえ可能です。


    もし、イベント処理を使う必要がなくなった場合は、この Sub 〜 End Sub の処理を
    Handles 句も含めて丸ごと削除すれば、イベントの割り当ても自動解除されます。


    これが C# だと、割り当てや解除を += や -= という演算子で行う言語仕様になっています。
    フォームデザイナーからだと、Form1.Desinger.cs ファイル内に自動的に
      DateTimePicker1.Enter += DateTimePicker1_Enter;
    に相当するコードが記載されることになります。
    左辺の「オブジェクト.イベント」に対して、右辺の「イベントハンドラ」が割り当てられます。


    それゆえ C# の場合、void DateTimePicker1_Enter(…) の処理が不要になったからと言って、
    不要になったイベントハンドラを不用意に削除してしまうと、.Designer.cs 側での
    アタッチコードが残ってしまい、「DateTimePicker1_Enter が見つからない!」ということで
    不整合を起こしてエラーになってしまうのですが、VB ではその心配が無いですね。


    ちなみに VB で Handles 句を使うためには、その変数が
      Friend WithEvents DateTimePicker1 As DateTimePicker
    のように、「WithEvents 句」付きで宣言されている必要があるのですが、
    フォームにコントロールを張り付けた場合、自動的に WithEvents 句付きの宣言が
    Form1.Desinger.vb ファイル内に自動生成されるので、普段は意識する必要がありません。



    一方、WebSurfer さんが書かれた AddHandler ステートメントですが、これが必要になるのは
    イベントの割り当てをフォームデザイナーによる自動割り当てに任せることなく、
    プログラムから明示的に、アタッチ操作を行いたい場合に限定されます。
    なので、AddHandler + AddressOf が必要になるのは、やや特殊なケースですね。
    (ちなみにでデタッチは RemoveHandler ステートメントです)


    ただし、デザイン時専用プロパティである「GenerateMember プロパティ」を
    True から False に変更していた場合には、Visual Basic (の 2005 以降) は
    WithEvents + Handles による標準的な割り当ての代わりに、
    AddHandler + AddressOf による割り当てを Form1.designer.vb に記述するようになっています。
記事No.86178 のレス /過去ログ147より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -