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

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

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

全過去ログを検索

<< 0 >>
■34609  Re[21]: パネルコントロールに配置したラベルのクリックイベントの取得
□投稿者/ 魔界の仮面弁士 -(2009/04/02(Thu) 20:27:45)
    No34608 (tamaboyo さん) に返信
    >>(1) 継承元の LB_Click 内にある、「OnLbClicked(new LbClickedEventArgs(label));」の行が実行されているか。
    >> → OnEventName メソッドは、イベントを発生させる為に用意されるメソッドです。
    > この行にブレイクをかけているのですが
    > 継承元のフォームを表示させてラベルをクリックすると、ブレイクが引っ掛かります。
    > 継承先のフォームを表示させてラベルをクリックしても、ブレイクは引っ掛かりません。

    まずは、ここに問題がありそうなのですが、その原因が思い当たりません。
    (当方では、EditExtend からクリックしても一時停止されるのですけれども)

    継承先で OnLbClicked をオーバーライドして、base.OnLbClicked(e); を握りつぶしてしまえば
    そのようになりますが、今回は virtual にしていないようですし…。


    >>(2) 継承元の OnLbClicked の中にある、「LbClicked(this, e);」の行が実行されているか。
    >> → これが最も重要な箇所です。これにより、LbClicked イベントが発生します。
    > ブレイクをかけて継承元のフォームを表示させてラベルをクリックさせてみましたが、
    > このブレイクには引っ掛かりませんでした。
    > その前の、if (LbClicked != null)の条件文で抜けています。

    null という事は、その時点で「.LbClicked += 〜」での登録作業が
    どこからも行われていないという事になりますね。

    今回、何故か継承先から OnLbClicked が呼ばれていないようなので、
    このコードが実行されているのは、継承先フォームから呼ばれた時ではなく、
    > 継承元のフォームを表示させてラベルをクリックすると、
    の場合なのでしょう。

    継承元では「.LbClicked += 〜」を登録しませんから、今回はここが
    null になってしまったのでは無いかと。


    > もちろん、継承先のフォームを表示させてラベルをクリックしても引っ掛かりません。
    (1) を通らないのですから、そうなりますね。


    >>(3) 継承先で「LbClicked += new LbClickedEventHandler(EditExtend_LbClicked);」が実行されているか。
    >> → ここでイベントハンドラとして登録されたメソッドが、イベント発生時に呼び出される事になります。
    > ブレイクをかけているのですがフォームを表示するタイミングで引っ掛かります。
    その登録箇所を通過しているという事ですね?


    > 継承先のEditExtend_LbClickedを抜ける直前にも
    > OnLbClicked(new LbClickedEventArgs(label));
    > の記述をしていますが、それで再定義になりますでしょうか?

    再定義にはなりませんが、そのコードには問題があると思います。
    OnLbClicked はイベントを強制発生させるためのメソッドですから、
    それだと、イベントが連鎖してしまうと思いますよ。

    EditExtend_LbClicked で base.OnLbClicked を呼び出すという事は、
    いわば、下記のような処理を実行しているのと同じ結果をもたらします。

     private void button1_Click(object sender, EventArgs e)
     {
      Text = DateTime.Now.ToString("HH:mm:ss.ffff");

      button1.PerformClick(); // Click イベントを発生させる。
     }


    > (2)で引っ掛かってないので、それが原因ということでしょうか。
    (2) が発生しないなら、LbClicked イベントは絶対に機能しません。
    ただ、その原因は (1) が継承先から呼ばれないことにあるような気もします。


    > LB_Click関数のOnLbClicked(new LbClickedEventArgs(label));で
    > 引数で渡しているlabelは、
    > Label label = (Label)sender;
    > で定義&値の設定をしています。
    > この時点ではnullではないのですが、OnBitClickedの飛んできたときにはnullになっています。

    ??
    今回のスレッドのなかで、OnBitClicked というメソッド名は初めて目にしますが、
    それは何者でしょうか。名前からして、BitClicked イベントの発火用メソッドだと
    思いますが、それと OnLbClicked との関係が分かりません。


    > 継承元でイベントが発生できていないということだったのですね。
    > イベントの宣言は
    > (snip)
    > です。
    > あっていると思うのですが・・・?
    この部分は問題無さそうですね。

    …とすると、何が原因なのでしょうね。

    もしかしたら、別の箇所に問題があるのかも知れませんが( No34513 のように)、
    今のところ、原因が思い当たらないです。
    >>> 投稿してから、いらない部分を消し、コードを整理したところ、イベントが取れるようになりました。


    比較用に、当方での手書き実装例を置いておきます。
    (解決前なので、実際に見るかどうかの判断はお任せしますが)

    Arrange関数を実装する前の、void Contorol_Load(int nMax) によるコード( No34500 )です。
    http://www.vb-user.net/junk/replySamples/2009.04.22.18.45/34467.ZIP
記事No.34467 のレス /過去ログ60より / 関連記事表示
削除チェック/

■69246  Re[1]: VS2005→2010、NET2.0→3.5移行時の考慮点
□投稿者/ shu -(2013/12/11(Wed) 08:05:03)
    No69244 (よこぴょん さん) に返信

    2.0から3.5への変換なら警告、エラーが出た箇所を潰していけば
    そんなには手間がかからないと思います。逆は大変だと思いますが。
    そのあと3.5で加わった機能へ置き換えるかは工数との兼ね合いですね。
記事No.69244 のレス /過去ログ118より / 関連記事表示
削除チェック/

■86716  Re[8]: DataGridView内のデータのキャストについて
□投稿者/ 魔界の仮面弁士 -(2018/03/02(Fri) 17:10:27)
    No86715 (MTK さん) に返信
    >> // 600.0m は ToString() で "600.0" になるのでパースできない
    > こういうデータがくると計算できないんですね・・・

    long.TryParse や decimal.TryParse の引数に NumberStyles パラメーターを加えることで、
    許容させる文字列書式をある程度制御できます。

    object money;
    //money = 1234.0m; // money.ToString() は「1234.0」、money.GetType().Name は「Decimal」
    money = "1,234.0"; // money.ToString() は「1,234.0」、money.GetType().Name は「String」

    // 変換できない
    Console.WriteLine(long.TryParse(money.ToString(), out long a));

    // 変換できる
    Console.WriteLine(decimal.TryParse(money.ToString(), out decimal b));
    Console.WriteLine(long.TryParse(money.ToString(), NumberStyles.Number, CultureInfo.InvariantCulture, out long c));
    Console.WriteLine(decimal.TryParse(money.ToString(), NumberStyles.Any, CultureInfo.InvariantCulture, out decimal d));


    long.TryParse に NumberStyles を渡さなかった場合は NumberStyles.Integer 相当、
    decimal.TryParse に NumberStyles を渡さなかった場合は NumberStyles.Number 相当でパースされます。
記事No.86693 のレス / END /過去ログ148より / 関連記事表示
削除チェック/

■86719  Re[9]: DataGridView内のデータのキャストについて
□投稿者/ MTK -(2018/03/02(Fri) 19:44:39)
    No86716 (魔界の仮面弁士 さん) に返信

    引数を4つ取るタイプのTryParseもあるんですね!
    調べてみた感じだと、NumberStylesの設定によって判定で許容されるものが変わるんですね。

    勉強になりました。
    ありがとうございました。
記事No.86693 のレス / END /過去ログ148より / 関連記事表示
削除チェック/

■92542  Re[2]: xlsmファイルをxlsxファイルに変換したい
□投稿者/ 魔界の仮面弁士 -(2019/10/03(Thu) 16:11:56)
    No92541 (魔界の仮面弁士) に追記
    >>Set bk = ex.Workbooks.Open(gf & "\" & f.Name)
    > 上記は
    >  Set bk = ex.Workbooks.Open(so.BuildPath(gf.Path, f.Name))
    > とすべきです。

    失礼しました。
    SaveAs の時は、保存先のパスを構築する必要がありますが、
    Open 時はその必要が無いので、もっと単純に
     Set bk = ex.Workbooks.Open(f.Path)
    だけで OK ですね。



    No92540 (佐藤 さん) に返信
    > 保存するファイル先も選びたいのですが、どう組めばよいのかわからず同じファイルに出力しています。

    どのように指定させることを想定しておられますか?
    それによって組み方も変わって来ます。


    「保存するファイル先」といっても、ループ中、ファイルごとに
    毎回 InputBox 関数などで問い合わせるというのも面倒ですし、
    特定のフォルダーに一括出力してしまうのが良いかもしれませんね。

    たとえば、特定の固定パス(ドキュメント フォルダーなど)に
    上書き出力させるという設計にもできるでしょう。

    あるいは現在のフォルダーに年月日日時分秒のサブフォルダー
    (例えば "2019-10-03_13;01;44" など)を CreateFolder で作成し、
    そのフォルダー内に SaveAs させていくという方法もあろうかと思います。


    > マクロなしブックにしますか?という問いも出てきてしまいます。
    DisplayAlerts = False が効いていれば、問い合わせは行われないと思います。

    それでも表示されるという事は、いずれかの .xlsm に Sub Workbook_Open() が仕込まれていて、
    そこで自動起動された処理が悪影響を及ぼしているのかもしれません。
    念のため、ループ中に毎回 EnableEvents を False にしておいては如何でしょうか。

    For Each f In gf.Files
     If LCase(so.GetExtensionName(f.Name)) = "xlsm"Then
      OldEnableEventsValue = ex.EnableEvents
      ex.EnableEvents = False
      Set bk = ex.Workbooks.Open(f.Path)
      bk.SaveAs 〜〜〜
      ex.EnableEvents = OldEnableEventsValue
      bk.Close
      Set bk = Nothing
     End If
    Next

    Workbooks.Oe

記事No.92540 のレス /過去ログ160より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -