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

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

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

全過去ログを検索

<< 0 >>
■2535  Listの一番下を常に表示するには?
□投稿者/ nish -(2006/02/13(Mon) 23:27:10)

    分類:[C#] 


    分類:[C#] 

    ListにItemを追加して更新する際、
    常に一番下のItemを表示するようにしたいのですが
    できますか?
親記事 /0過去ログ3より / 関連記事表示
削除チェック/

■20444  VB.NET と C#でのイベントハンドル登録方法の違い
□投稿者/ じゅで -(2008/06/10(Tue) 17:42:03)

    分類:[C#] 

    じゅでです。
    いつもお世話になっております。

    今回お聞きしたいのは、イベントの登録方法についてです。

    C#では、今現在以下のような形でイベントの登録・削除を行っております。

    [Category("Hoge"), Description("ぼたん1くりっく")]
    public event EventHandler Button1
    {
    add { this.button1.Click += value; }
    remove { this.button1.Click -= value; }
    }

    ユーザコントロール上に存在するボタンに対して、フォーム側で中身の実装をするのに
    上記のような方法をしようしております。
    (手抜きです。senderに対して、ユーザコントロールのボタンなどが、フォーム側では取れます。)

    さて、ここで問題になっているのが、VB.NETにこのコードを移し変える方法です。

    <System.ComponentModel.Category("hoge"), System.ComponentModel.Description("ボタン1クリックだよ。")> _
    Public Event Button1 As EventHandler
    AddHandler(ByVal value As EventHandler)
    AddHandler me.Button1.Click, value
    End AddHandler
    RemoveHandler(ByVal value As EventHandler)
    RemoveHandler me.Button1.Click, value
    End RemoveHandler
    End Event

    上のようなイメージになるのかとも思っていたのですが、
    どうにも構文エラーで煮詰まっております。

    AddHandlerでエラーが起こっているのですが、
    どうしたら、上に書いてあるC#と同様の事を行うような、プログラムがVB.NETで組めますか?

    お分かりになる方がいらっしゃいましたら、ご回答よろしくお願い致します。

    以上

親記事 /過去ログ39より / 関連記事表示
削除チェック/

■49176  Re[2]: VisualStudio2010をインストールできない
□投稿者/ VS2010ユーザ -(2010/04/25(Sun) 18:22:03)
    追加情報です。
    インストールログには下記の情報がありました。

    [04/25/10,12:39:10] Microsoft Visual Studio 2010 Ultimate - JPN: ***ERRORLOG EVENT*** : CRootComponent::Install(): Cannot install; setup files failed verification.
    [04/25/10,12:39:10] Microsoft Visual Studio 2010 Ultimate - JPN: MsiInstallProduct return code: 1620.
    [04/25/10,12:39:10] InstallReturnValue: ROOT_COMP, 0x654
    [04/25/10,12:39:10] Setup.exe: AddGlobalCustomProperty
    [04/25/10,12:39:10] Setup.exe: AddGlobalCustomProperty
    [04/25/10,12:39:10] Microsoft Visual Studio 2010 Ultimate - JPN: ***ERRORLOG EVENT*** : ERROR_INSTALL_PACKAGE_INVALID returned in CRootComponent::Install; the following file is invalid: q:\vs_setup.msi
    [04/25/10,12:39:10] Microsoft Visual Studio 2010 Ultimate - JPN: validation recorded.

    エラーログから推測すると、MSDNからダウンロードしたISOファイルに格納されているvs_setup.msiが破損しているのでは?と考えております。しかし大半の方は問題なくVS2010をインストールできているようですので、こちらの環境の問題である気もしています。
    相変わらず、どうすればよいか不明な状況が続いています。。。


    No49172 (囚人 さん) に返信
    > >インストールのmsiがいるが壊れてる?
    >
    > と思われてるみたいですけど、OSインストール前にファイルが壊れてないかどうかは確認しました?

    コメントありがとうございます。
    msiファイルが壊れているかどうかを、どのように調べればよいのでしょうか。
    確認してみたいですが、方法が分からず、ご教授いただけると嬉しいです。
    よろしくお願いします。
記事No.49166 のレス /過去ログ83より / 関連記事表示
削除チェック/

■49937  Re[1]: DB接続クラスについて
□投稿者/ はつね -(2010/05/24(Mon) 16:48:43)
    No49934 (teru さん) に返信
    > 接続型のクラスサンプルは比較的見るのですが、非接続型のクラスは見たことがありません。
    > どのように作成すればよいのでしょうか?

    非接続型だったら簡単に言えば、GetRecordsとSetRecordsみたいな感じで、DataSetにDBから値をとってくるのと
    DataSetの値をDBに反映するのがあればいいじゃ?

    で、それぞれの中で
    Connection接続
    CommandにSQL設定
    Adapter関係の処理
    を行う感じで。


    > cn.ConnectionString = @"Data Source = .\SQLEXPRESS;"

    分の終わりの ; がないようですけど(文字列の中にはありますが)。
記事No.49934 のレス /過去ログ84より / 関連記事表示
削除チェック/

■82891  Re[3]: asmxでUserAgentが取得できない
□投稿者/ WebSurfer -(2017/02/17(Fri) 18:17:35)
    No82887 (UNO さん) に返信

    > 別ページtest.aspxからvbコード上でHttpWebRequestを利用しtest.asmxをコールしたときはUserAgentはnothingでした。

    HttpWebRequest では User Agent は送られないのでは?

    Fiddler を使って要求ヘッダを調べてみてはいかが? 相手が localhost でなければ HttpWebRequest を使った場合
    でもキャプチャできると思います。

    Fiddler のお勧め
    http://surferonwww.info/BlogEngine/post/2011/05/25/Recommendation-of-Fiddler.aspx
記事No.82882 のレス /過去ログ141より / 関連記事表示
削除チェック/

■82892  Re[3]: asmxでUserAgentが取得できない
□投稿者/ WebSurfer -(2017/02/17(Fri) 18:24:34)
記事No.82882 のレス /過去ログ141より / 関連記事表示
削除チェック/

■82893  Re[11]: 長いパス名のファイルをリネーム、削除する方法
□投稿者/ 魔界の仮面弁士 -(2017/02/17(Fri) 18:30:14)
    No82890 (がもう さん) に返信
    > 仰る通り、ボリュームを同じにするとうまくいきました。

    System.IO.Directory.Move("D:\DDD", "C:\DDD")
    Rename("D:\DDD", "C:\DDD")

    が失敗するのも同じ理由ですね。
    API というよりは、ファイルシステム側の都合な気もしますが。



    > もしボリュームを変えたい場合には
    > どうすれば良いのでしょうか?

    別ボリュームに新規フォルダを作成し、
    逐次移動(Copy & Delete)させてください。サブフォルダも同様です。


    ちなみに、My.Computer.FileSystem.MoveDirectory は
    ボリューム間の移動に対応していますが、こちらも結局は
    別ボリュームに新規フォルダを作成していたりします。
    (UIOption を指定した場合は SHFileOperation API が使われますが)

    このような事情から、My.Computer.FileSystem.MoveDirectory を使うと、
    別ボリュームだと、フォルダのタイムスタンプが新規作成相当の日時になります。
    同一ボリューム内だとタイムスタンプが更新されないのですけれどね。
記事No.82875 のレス /過去ログ141より / 関連記事表示
削除チェック/

■87323  Re[5]: パネルとスプリッターを使った時の処理方法
□投稿者/ 魔界の仮面弁士 -(2018/05/10(Thu) 17:24:23)
    No87308 (夜叉丸 さん) に返信
    > panel1の幅200、panel2の幅300をキープしたかったので、

    フォームサイズが (150, 150) になったりすると、最小幅を維持できないので、
    Form の MinimumSize もセットしておいた方がよいかと思います。


    現状だと、Form サイズが小さすぎた場合、
    panel1.Width = 200、panel2.Width = 0 になりえますし、
    それよりさらに狭くなると、panel1 に押しやられた splitter1 が
    マイナス座標に配置されることになりますよね。


    > パネルの表示が壊れたり、Splitter1が消えたりします。
    現象を再現できなかったので、状況が読みきれていません…。

    > フォームを大きくして、panel1の幅をSplitter1を使って広げた後、
    > フォームの右端をドラッグしたままフォームの幅を狭くすると
    具体的なサイズが分かると、こちらでも状況を追跡できるかも。

    (1) Form の Width を幾つまで広げたのか
    (2) panel1 の Width をどこまで広げたのか
    (3) その後、Form の Width をどこまで狭めたのか



    > 壊れないようにするにはどうすればよいのでしょうか?
    もしも再配置が追いついていないようであれば、フォームのリサイズが終了した後で、
    ResumeLayout を呼び出してみるのはどうでしょう。
    https://dobon.net/vb/dotnet/control/suspendlayout.html


    No87314 (にゃるら さん) に返信
    > 1. まずSplitContainerを配置し、OrientationをHorizontalにする
    > 2. 1で配置したSplitContainerの左側のパネルにSplitContainerを配置

    1 が Vertical で、2 が Horizontal では無いでしょうか。

    Horizontal (水平線) だと上下配置、
    Vertical (垂直線) が左右配置ですよね。



    No87316 (夜叉丸 さん) に返信
    > SplitContainerを使ってやりたいことができました。

    SplitContainer なら、Resize イベント等のコーディングも不要で、
     splitContainer1.SplitterWidth = 10
     splitContainer1.Panel1MinSize = 300
     splitContainer1.Panel2MinSize = 200
    をデザイン時に設定しておくだけで済むはずです。

    それに Splitter をドラッグする際の視覚効果も、最小サイズ以下にならないよう調整されるので、
    ユーザビリティ的にも画面設計効率的にも、SplitContainer の方がお奨めです。

    VS2005/VS2008 時代の MSDN を見てみると「SplitContainer コントロール (Windows フォーム)」の
    解説において、下記のように記されていますしね。

    》メモ:
    》 ツールボックスでは、以前のバージョンの Visual Studio で使用されていた Splitter コントロールが、
    》 このコントロールに置き換えられました。SplitContainer コントロールの優先度は、Splitter コントロールよりも
    》 かなり高くなります。Splitter クラスは、既存のアプリケーションとの互換性を確保するために、引き続き
    》 .NET Framework に含まれていますが、新しいプロジェクトに対しては、SplitContainer コントロールを
    》 使用することを強くお勧めします。

    ※ VS2017 では機械翻訳ヘルプになってしまったので分かり難い…。
    https://docs.microsoft.com/ja-jp/dotnet/framework/winforms/controls/splitcontainer-control-windows-forms
記事No.87308 のレス /過去ログ150より / 関連記事表示
削除チェック/

■87325  Re[6]: パネルとスプリッターを使った時の処理方法
□投稿者/ 夜叉丸 -(2018/05/10(Thu) 18:39:06)
    2018/05/10(Thu) 18:39:22 編集(投稿者)

    No87323 (魔界の仮面弁士 さん) に返信
    > ■No87308 (夜叉丸 さん) に返信
    >>panel1の幅200、panel2の幅300をキープしたかったので、
    >
    > フォームサイズが (150, 150) になったりすると、最小幅を維持できないので、
    > Form の MinimumSize もセットしておいた方がよいかと思います。
    >
    >
    > 現状だと、Form サイズが小さすぎた場合、
    > panel1.Width = 200、panel2.Width = 0 になりえますし、
    > それよりさらに狭くなると、panel1 に押しやられた splitter1 が
    > マイナス座標に配置されることになりますよね。
    >
    MinimumSize はセットしています。

    > 具体的なサイズが分かると、こちらでも状況を追跡できるかも。
    >
    > (1) Form の Width を幾つまで広げたのか
    > (2) panel1 の Width をどこまで広げたのか
    > (3) その後、Form の Width をどこまで狭めたのか

    新規のフォームサイズを(526,339) で作成します。
    フォントはデフォルトの [MSUIGothic, 13pt] を使ってます。
    同時に MinimumSize = (526, 339) にします。

    パネル(panel1)を貼り付け サイズを(200, 300)で、Dock = Right にします。
    スプリッター(splitter1)を貼り付け サイズを(10, 300)で、Dock = Right にします。
    パネル(panel1)を貼り付け サイズを(200, 300)で、Dock = Fill にします。
    すると以下のようになります。
    ┌─────────────┐
    │┌───┐┌─┐┌───┐│
    ││   ││S ││   ││
    ││   ││pt││   ││
    ││Panel1││le││Panel2││
    ││   ││ir││   ││
    ││   ││t1││   ││
    │└───┘└─┘└───┘│
    └─────────────┘
    わかりやすく Panel1 の上に ListBox1 を、
    Panel2 の上に ListBox2 を貼り付けて、どちらも DOCK=Fillにしました。
    Panel1, Panel2 のリサイズイベントに以下のコードを追加します。

    private void panel1_Resize(object sender, EventArgs e)
    {
     if (panel1.Width < 200) panel1.Width = 200;
    }

    private void panel2_Resize(object sender, EventArgs e)
    {
     if (panel2.Width < 300) panel1.Width = this.ClientSize.Width - 300 - splitter1.Width;
    }

    スプリッターの移動だけなら問題なく動きます。
    ところが、フォームを広げ、panel2 の横幅を広げた状態にして
    ┌───────────────────┐
    │┌───┐┌─┐┌─────────┐│
    ││   ││S ││         ││
    ││   ││pt││         ││ form (526,339) →(1500,339)
    ││Panel1││le││   Panel2   ││ panel1 (200,300) →(1000,300)
    ││   ││ir││         ││ panel2 (526,339) →(474,300)
    ││   ││t1││         ││
    │└───┘└─┘└─────────┘│
    └───────────────────┘
    フォームの右端をドラッグしてフォームのサイズを素早く小さく
    (フォームの右端をドラッグしたままマウスを左にすばやく移動)します。
    ゆっくり動かすとならない、またはなりにくいです。
    本来 panel1 と panel2 の幅の合計は 1078-26=1052 なのに
    752+280=1032 になっている。その差 20 がグレー部分で表示されていると思います。
    というより画面キャプチャ―して調べるとグレー部分が20増えていました。
    ┌───────────────┐
    │┌───┐┌─┐┌───┐  │
    ││   ││S ││   │  │
    ││   ││pt││   │  │ form (1078,339)
    ││Panel1││le││Panel2│  │ panel1 (752,300)
    ││   ││ir││   │  │ panel2 (280,300)
    ││   ││t1││   │  │
    │└───┘└─┘└───┘  │
    └───────────────┘
                  ↑
                グレー(Control色)の部分が表示される。

    現状 ListBox が Panel2 の上に張り付けているので
    フォームの内側が真っ白になることもありました。

    >>壊れないようにするにはどうすればよいのでしょうか?
    > もしも再配置が追いついていないようであれば、フォームのリサイズが終了した後で、
    > ResumeLayout を呼び出してみるのはどうでしょう。
    > https://dobon.net/vb/dotnet/control/suspendlayout.html
    >
     ResumeLayout を呼びましたが表示は変わりません。
     UpDate, Refresh も表示は変わりません。
     処理途中で強制終了されているような感じです。

    >
    > SplitContainer なら、Resize イベント等のコーディングも不要で、
    >  splitContainer1.SplitterWidth = 10
    >  splitContainer1.Panel1MinSize = 300
    >  splitContainer1.Panel2MinSize = 200
    > をデザイン時に設定しておくだけで済むはずです。

    はい、設定しました。

    > それに Splitter をドラッグする際の視覚効果も、最小サイズ以下にならないよう調整されるので、
    > ユーザビリティ的にも画面設計効率的にも、SplitContainer の方がお奨めです。
    >
    > VS2005/VS2008 時代の MSDN を見てみると「SplitContainer コントロール (Windows フォーム)」の
    > 解説において、下記のように記されていますしね。
    >
    > 》メモ:
    > 》 ツールボックスでは、以前のバージョンの Visual Studio で使用されていた Splitter コントロールが、
    > 》 このコントロールに置き換えられました。SplitContainer コントロールの優先度は、Splitter コントロールよりも
    > 》 かなり高くなります。Splitter クラスは、既存のアプリケーションとの互換性を確保するために、引き続き
    > 》 .NET Framework に含まれていますが、新しいプロジェクトに対しては、SplitContainer コントロールを
    > 》 使用することを強くお勧めします。
    >
    > ※ VS2017 では機械翻訳ヘルプになってしまったので分かり難い…。
    > https://docs.microsoft.com/ja-jp/dotnet/framework/winforms/controls/splitcontainer-control-windows-forms

    今後は SplitContainer を使用するようにします。


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

■87324  Re[6]: パネルとスプリッターを使った時の処理方法
□投稿者/ にゃるら -(2018/05/10(Thu) 18:10:37)
    No87323 (魔界の仮面弁士 さん) に返信

    > ■No87314 (にゃるら さん) に返信
    >>1. まずSplitContainerを配置し、OrientationをHorizontalにする
    >>2. 1で配置したSplitContainerの左側のパネルにSplitContainerを配置
    >
    > 1 が Vertical で、2 が Horizontal では無いでしょうか。
    >
    > Horizontal (水平線) だと上下配置、
    > Vertical (垂直線) が左右配置ですよね。


    うわ、間違ってました。ご指摘ありがとうございます!

    なので、念のために修正したものをば。

    1. まずSplitContainerを配置
    2. 1で配置したSplitContainerの左側のパネルにSplitContainerを配置し、OrientationをHorizontalにする
    3. 2で配置したSplitContainerのどちらかのパネルにSplitContainerを配置し、OrientationをHorizontalにする(これで左側の縦並び3つが完成)
    4. 1で配置したSplitContainerの右側のパネルにSplitContainerを配置し、OrientationをHorizontalにする
    5. 4で配置したSplitContainerの上側のパネルにSplitContainerを配置
記事No.87308 のレス /過去ログ150より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -