DOBON.NETプログラミング道掲示板

■ 「新規作成」から投稿できます。
■ マルチポストされた投稿を見つけたときは、その投稿に返信することによりご報告ください。その際は匿名で投稿し、マルチポストされている場所を併記してください。
■ スパム対策のため、メールアドレスの先頭に"_"という文字が付加されています。
RSS 2.0 RSS 2.0 | RSS 0.91 | 携帯電話用 | 自分専用のアイコンを使用するには | 掲示板への要望 | 管理人に連絡 | お気楽掲示板
■ 24時間以内に作成されたスレッドは New で表示されます。
■ 24時間以内に更新されたスレッドは UpDate で表示されます。

記事リスト ( )内の数字はレス数
Nomalwebformでの制御(5) | Nomalロジックの実現お願い(4) | NomalAppActiveが正常に機能しない。(4) | Nomaltextboxでmultilineでの改行削除について(2) | Nomalftp接続してファイルアップロード後、別フォルダにコピー(5) | Nomalリソースデザイナの開き方(11) | NomalDataGridViewのイベント中にデータを更新するとエラーが発生(2) | NomalGetObjectでExcelファイルを加工するとExcelファイルが壊れる(9) | Nomalフォントに登録されていない文字の検出(2) | Nomaloledbでdatatableを取得するときにエラーになる(1) | NomalDataGridViewの複数行選択で歯抜け選択を無効にしたい(2) | Nomal証券会社へのログイン(1) | Nomalユーザーフォームに埋め込んだAutoCADの変化を捉える(0) | Nomalシステムドライブ以外へのページング設定が反映されない(5) | Nomalブラウザでコピーした透過PNGを貼り付けたい(4) | Nomalforeachでループ回数を取得(2) | Nomalbitmapが保存できない(2) | Nomal特定ピクセルで画像を読み込みたい(2) | NomalDataGridViewでAlt+Enterで改行したい(2) | Nomal全角シフト中にアクセスキーが効かない(5) | NomalDataAdapter.Updateで構文エラー(6) | Nomal抽象クラスで実装したクラスの情報を知る(3) | NomalProcessクラスからbatファイル実行後、KILLできない(2) | Nomal画面遷移(モーダルとモードレス)(2) | Nomal兆億万表記の文字列を数値に変換できる?(3) | NomalGetDirectoriesでルートを指定するとエラーになる(3) | NomalLinqにおける明示的型指定の方法(3) | Nomal2つのradの数値から1つの角度を求めるコードを改善できますか?(C++)(2) | Nomalコンソールアプリで、WebView2の利用(2) | NomalEntity Frameworkは、使えるか?(2) | Nomalデータベースからのテーブル名一覧の効率的な取得方法(3) | NomalC#のlong型でオーバーフローになる(2) | Nomal正規表現のパターン表記方法(2) | NomalWebView2によるスクレ―ピング(4) | Nomalこういた物を作れますか?(2) | Nomalツールボックスにtableadapterが表示されない(1) | NomalC# Chart X軸上のグラフ表示(3) | NomalVB.NETでBluetoothデバイスの電池残量を取得する方法(3) | Nomalクリスタルレポート 明細部のサブレポート(0) | Nomal重なったPictureBox同士を透過する方法(7) | NomalWindowsフォームデザイナについて(3) | NomalVB.NETからcmdでpingを実行した時の結果(5) | Nomalvb.netでExcelファイル操作(7) | Nomalvb.netでのExcelファイルそうさ(2) | Nomalキーボード+バーコードでキーボード入力を無効にしたい(6) | Nomalファイルとして配置したマニフェストを優先したい(2) | NomalTabPageの背景色(5) | NomalVB2022でクリスタルレポートが開けない(2) | NomalC#でJpeg圧縮のTiffファイルを作成したい(4) | Nomalエクセルのみ監視ができない(2) | NomalDataGridViewのVirtualModeを有効した場合の実装方法(4) | NomalExcelの数値 -> 日付みたいな関数?(2) | NomalDrawstringでの透過文字作成(3) | Nomaljumbo icon(256x256)が存在するか知る方法(6) | NomalSpinWait()を使う理由(2) | Nomalantecedentってなんですか?(2) | Nomalワンタイムパスワードのサイトに自動ログインしてアクセストークンを得る(3) | Nomalstyle.displayだと効率悪いから違うやり方をしたいです。(5) | Nomalテーブルを順番通りに直すプログラムを外部で読み込めるようにしたいです。(4) | NomalJSONの複雑な入れ子内部の値を取りたい。(3) | Nomalグリッド表示レコードをJSONに変換(5) | Nomalシステム時計の設定(3) | NomalSeleniumで開いているページのTableを編集したい(5) | Nomalソケット通信入門 ひらがな(4) | NomalVisual Basicでエラーが出る(3) | Nomalインストーラにて、ローミングフォルダにファイルを配置したい(0) | NomalRGB値の所得(2) | NomalVB.net からAccessDBへの接続(2) | Nomal時間変数(文字列)の扱い(4) | Nomal画像のスクロール(6) | Nomalタイマーの一括処理(6) | NomalTreeViewとDataGridViewのスクロールを同期(シンクロ)させたい(4) | NomalTreeViewの現在位置とDataGridViewの現在位置を合わせたい(7) | Nomalフォームのリサイズ時にDataGridViewが再描画されない(4) | NomalPDFをフォーム上で表示させる方法につきまして(4) | NomalPictureBoxの画像を連続保存(11) | NomalテキストボックスのValidatingイベントよりも先に発生するボタン発生イベントは何でしょう?(2) | Nomal継承元フォームで各フォームのボタン動作を検知したい(3) | NomalWindowsエクスプローラからのドラッグ&ドロップ(2) | Nomalラジオボタンの一括設定(7) | Nomalクリックイベントでexeを作成できるか(2) | Nomal作成した白黒画像をWordに貼り付けてから「図として保存」(8) | Nomalアセンブリ情報が載らない(1) | NomalRichTextBoxのテキストをpictureBOXへ(12) | Nomalc#で日付型の定義の仕方で質問があります。(2) | Nomal先頭に空白(スペース)があるファイルを読み込んでRichTextBoxへ書き出すとスペースが削除える(6) | NomalExcel Com オブジェクトの増殖(13) | Nomal二次元マップから値の取得(1) | NomalアプリでHDMIへ出す解像度を変えたい(4) | NomalDataGridViewのドロップダウンリストの表示と選択後の値を分けたい(1) | Nomal列車の時間ごとの位置情報を表示したいです。(2) | Nomal画像の中心を基点に回転(4) | NomalDataGridViewの行ヘッダーに行番号を表示した時のエラー(4) | NomalタッチキーボードでIMEを自動で切替えたい(6) | NomalVSTOによるエクセルアドインのインストーラーでのアップデート(1) | NomalMP4動画を再生する方法について(5) | NomalVB.NetでVB6.0と同じFontを指定しても同様に印刷されない(9) | NomalLableのカラー色を文字変数から変更したい(5) | NomalUrlにアクセスするとダウンロードされるファイルを捕まえる(2) | NomalDataGridViewの特定セルにボタンを配置する方法(5) |



■記事リスト / ▼下のスレッド
■35187 / 親記事)  MP4動画を再生する方法について
□投稿者/ ま〜 一般人(11回)-(2022/10/21(Fri) 14:45:25)
  • アイコン環境/言語:[Basic VS2022] 
    分類:[.NET] 

    こんにちは、動画再生したいと思ってネットで色々調べて試行錯誤しましたが上手く再生できません。エラーも何も起こらないです。
    @とAの2種類の方法で試してみました。どこか間違ってますでしょうか?

    '---@ーー
    Private Sub Button1_Click・・・・・
    AxWindowsMediaPlayer1.URL = "ビデオ\test.mp4" '
    AxWindowsMediaPlayer1.currentPlaylist = AxWindowsMediaPlayer1.mediaCollection.getByName("ビデオ¥test.mp4")
    AxWindowsMediaPlayer1.settings.autoStart = True
    AxWindowsMediaPlayer1.Ctlcontrols.play()
    End Sub

    '----A ------
    Dim WithEvents Player As WMPLib.WindowsMediaPlayer

    Private Sub Button2_Click・・・・・・
    Player = New WMPLib.WindowsMediaPlayer
    Player.URL = "ビデオ\test.mp4"
    Player.controls.play()
    End Sub

    よろしくお願いします。
違反を報告
引用返信

▽[全レス5件(ResNo.1-5 表示)]
■35191 / ResNo.1)  Re[1]: MP4動画を再生する方法について
□投稿者/ Hongliang 大御所(634回)-(2022/10/21(Fri) 20:11:27)
  • アイコン念のための確認ですが、
    > "ビデオ¥test.mp4"
    これはフルパスで指定していますか?
    そうでなければ、Explorerで対象のファイルをShiftキーを押しながら右クリックして「パスのコピー」を行い、それを設定してみてください。

    一応、私の環境で以下の手順で再生できることを確認しました
    1. Visual Studioで新しいプロジェクトを作成 .NET フォームアプリケーション(.NET Framework)
    2. ツールボックスを右クリックして「アイテムの選択」から、COMコンポーネントのWindows Media Playerにチェックを入れてOK
    3. ツールボックスに追加されたWindows Media PlayerとButtonをFormに貼り付ける
    4. ButtonをダブルクリックしてClickイベントを追加し、Sub内に以下のコードを入力

    Me.AxWindowsMediaPlayer1.URL = "パスのコピーでコピーした動画ファイルのフルパス"
    ' 既定でAxWindowsMediaPlayer.settings.autoStartがTrueなので明示的にplay()する必要はないはず
    ' Me.AxWindowsMediaPlayer1.Ctlcontrols.play()

    5. F5でデバッグ開始し、ボタンをクリックする
違反を報告
引用返信
■35192 / ResNo.2)  Re[2]: MP4動画を再生する方法について
□投稿者/ Hongliang 大御所(635回)-(2022/10/21(Fri) 20:20:42)
  • アイコンなお、プロジェクトの作成によく似た名前の「Windows フォームアプリ」というのがありますが、これは.NET 5以降向けのアプリケーションを作成するテンプレートです。
    一方「Windows フォームアプリケーション(.NET Framework)」は.NET Framework 4.8まで向けのテンプレートとなります。

    「フォームアプリ」の方は、デザイナが十分に成熟していないなどWinFormsアプリケーションを作るのにはあまりいい話を聞かないので、WinFormsを作る場合、現状では.NET Frameworkの方で作った方がよいかもしれません。
違反を報告
引用返信
■35197 / ResNo.3)  Re[2]: MP4動画を再生する方法について
□投稿者/ ま〜 一般人(13回)-(2022/10/25(Tue) 10:39:55)
  • アイコンNo35191に返信(Hongliangさんの記事)
    > 念のための確認ですが、
    >>"ビデオ¥test.mp4"
    > これはフルパスで指定していますか?
    エクスプローラに"ビデオ¥test.mp4"を入れると再生出来ていたので安心していました。
    パス名やファイル名が間違っていてもエラーにならないようです
    フルパスで解決しました。

    ありがとうございます。


解決み!
違反を報告
引用返信
■35198 / ResNo.4)  Re[3]: MP4動画を再生する方法について
□投稿者/ ま〜 一般人(14回)-(2022/10/25(Tue) 10:59:20)
  • アイコンNo35192に返信(Hongliangさんの記事)

    > 「フォームアプリ」の方は、デザイナが十分に成熟していないなどWinFormsアプリケーションを作るのにはあまりいい話を聞かないので、WinFormsを作る場合、現状では.NET Frameworkの方で作った方がよいかもしれません。

    これって 張り付けた画像の様な選択ですよね。
    理解しきって無いのですが何を基準に選べば宜しいでしょうか?
390×127 => 250×81
イメージ
1666663160.jpg
/17KB
違反を報告
引用返信
■35201 / ResNo.5)  Re[4]: MP4動画を再生する方法について
□投稿者/ ま〜 一般人(15回)-(2022/10/26(Wed) 14:57:18)
  • アイコン取りあえずクローズします。ありがとうございました。
解決み!
違反を報告
引用返信

■記事リスト / レス記事表示 → [親記事-5]



■記事リスト / ▼下のスレッド / ▲上のスレッド
■35185 / 親記事)  VB.NetでVB6.0と同じFontを指定しても同様に印刷されない
□投稿者/ ゆりりん 一般人(1回)-(2022/10/21(Fri) 11:45:23)
  • アイコン環境/言語:[環境(Windows10 64bit)、使用言語(VB.net2017)、.NET Framework 4.6.1 ] 
    分類:[.NET] 

    いつも参照させていただいています。

    現在、VB6.0で書かれた印刷プログラムをVB.Netに移行しています。
    その中で、VB6.0と全く同じ座標とFont種類・サイズを指定しても、
    VB.Netで印刷すると、少し右にずれてしまうし、Fontのサイズが微妙に違ってしまいます。
    Fontの高さは同じようなのですが、文字と文字の隙間が微妙に違うようで、長い文字列を印刷すると、印刷された文字の長さがVB.Netの方が長くなってしまうのです。
    座標系はどちらも、ミリメートルを指定しています。
    VB.Netで印刷された文字列の前に空白が付くことは、下記のサイトを参照して分かったので、ずれる分を引いた座標を指定したら、右にずれる件は解決したのですが、同じFontを指定しても違ってしまう件が解決できません。
    同じプリンタとプリンタドライバを使用しているのに、どうしてVB6.0とVB.Netで違ってしまうのか、まったくわかりません。

    ・使用しているプリンタ ラベルプリンタ SATO CL4NX-J 609dpi
    ・プリンタ解像度 609dpi 24dot/mm

    ・参考にしたサイト
    VB.netで文字を正確な位置に描く。
    https://penguinlab.jp/blog/post/117

    ※VB6.0のサンプル

    Printer.ScaleMode = 6
    Printer.FontName = "MS ゴシック"
    Printer.FontSize = 9
    Printer.CurrentX = 12.5
    Printer.CurrentY = 30.7
    Printer.Print "IN-OUT<AB>CD EFG-HIJK-LMN A<10>"

    ※VB.Netのサンプル

    e.Graphics.PageUnit = GraphicsUnit.Millimeter
    Dim f As New Font("MS ゴシック", 9, FontStyle.Regular)
    e.Graphics.DrawString("IN-OUT<AB>CD EFG-HIJK-LMN A<10>", f, Brushes.Black, 12.5, 30.7)

    こんな感じです。


    どなたかわかる方、どうかアドバイスをお願いいたします。

違反を報告
引用返信

▽[全レス9件(ResNo.5-9 表示)]
■35202 / ResNo.5)  Re[5]: VB.NetでVB6.0と同じFontを指定しても同様に印刷されない
□投稿者/ 魔界の仮面弁士 大御所(1467回)-(2022/10/26(Wed) 18:29:47)
  • アイコンNo35200に返信(ゆりりんさんの記事)
    > 想定していたよりかなり小さく印刷されてしまい、
    物理単位と論理単位の違いでは無いでしょうか。

    恐らく、最初の回答で述べた「TextRenderer.DrawText」を使った場合と
    同じぐらいのサイズで描画されていませんか?

    GDI+ 側の PageUnit プロパティを操作しても、
    GDI 側のデバイスコンテキストには影響を与えないと思います。


    > 座標は合っているようなのですが、想定していたよりかなり小さく印刷されてしまい
    単位系が未設定の場合、初期値として
    GDI+ 側(PageUnit プロパティ)は Display(1) を返し、
    GDI 側(GetMapMode API)は MM_TEXT(1) を返すようです。

    Sub SetFont でフォントを生成する際に、
    MM_TEXT から MM_LOMETRIC あるいは MM_HIMETRIC で
    生成するようにしてみては如何でしょうか。


    > Private Sub pd_PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs)
    >  Dim mFont As IntPtr
    ここで宣言されたローカル変数の mFont と

    > Private Sub SetFont(ByVal control As IntPtr, ByVal fontFamily As String, ByVal fontSize As Integer)
    >  mFont = CreateFont(fontSize * -1, 0, 0, 0, 400, 0, 0, 0, 1, 0, 0, 0, 0, fontFamily)
    ここで利用されているフィールド変数の mFont は
    それぞれ別の変数ですが、大丈夫ですか?
違反を報告
引用返信
■35207 / ResNo.6)  Re[6]: VB.NetでVB6.0と同じFontを指定しても同様に印刷されない
□投稿者/ ゆりりん 一般人(4回)-(2022/10/28(Fri) 10:38:17)
  • アイコンいつもありがとうございます。

    > 物理単位と論理単位の違いでは無いでしょうか。
    >
    > GDI+ 側の PageUnit プロパティを操作しても、
    > GDI 側のデバイスコンテキストには影響を与えないと思います。

     そういうことだったのですね。

    > Sub SetFont でフォントを生成する際に、
    > MM_TEXT から MM_LOMETRIC あるいは MM_HIMETRIC で
    > 生成するようにしてみては如何でしょうか。

     早速、やってみようと思います。
     
    >> Dim mFont As IntPtr
    > ここで宣言されたローカル変数の mFont と
    >
    >> mFont = CreateFont(fontSize * -1, 0, 0, 0, 400, 0, 0, 0, 1, 0, 0, 0, 0, fontFamily)
    > ここで利用されているフィールド変数の mFont は
    > それぞれ別の変数ですが、大丈夫ですか?

     すみません。
     ここに載せる時に、間違えました。
     実際には、論理フォントの作成の後に入っています。
     お気づきいただき、ありがとうございました。
違反を報告
引用返信
■35212 / ResNo.7)  Re[6]: VB.NetでVB6.0と同じFontを指定しても同様に印刷されない
□投稿者/ ゆりりん 一般人(5回)-(2022/10/28(Fri) 16:49:02)
  • アイコン> Sub SetFont でフォントを生成する際に、
    > MM_TEXT から MM_LOMETRIC あるいは MM_HIMETRIC で
    > 生成するようにしてみては如何でしょうか。


    <System.Runtime.InteropServices.DllImportAttribute("gdi32.dll")>
    Friend Shared Function SetMapMode(ByVal hdc As Integer, ByVal fnMapMode As Integer) As Integer
    End Function

     を追加しまして、

    Private Sub SetFont(ByVal control As IntPtr, ByVal fontFamily As String, ByVal fontSize As Integer)

    Call SetMapMode(control, 2) 'MM_LOMETRIC
    mFont = CreateFont(fontSize * -1, 0, 0, 0, 400, 0, 0, 0, 1, 0, 0, 0, 0, fontFamily)
    mFontOld = SelectObject(control, mFont)

    End Sub

     このように書いてみたのですが、
     何も印刷されなくなってしまいました。
     SetMapMode の使い方が、間違っているのでしょうか。

     度々申し訳ございません。
     ご教授いただければと思います。
     どうぞよろしくお願いいたします。


違反を報告
引用返信
■35214 / ResNo.8)  Re[7]: VB.NetでVB6.0と同じFontを指定しても同様に印刷されない
□投稿者/ 魔界の仮面弁士 大御所(1473回)-(2022/10/28(Fri) 21:29:20)
  • アイコン
    No35212に返信(ゆりりんさんの記事)
    > 何も印刷されなくなってしまいました。
    
    『フォントサイズ』の指定、および、『描画位置の座標』は正しいですか?
    
    MM_TEXT から MM_LOMETRIC に変更したのであれば、フォントサイズだけでは無く
    描画座標も MM_LOMETRIC 単位系で計算しなおす必要があります。
    
    
    描画位置を変更したくない場合は、GetMapMode と SetMapMode をペアで使うようにして、
    フォント作成後、描画時に座標系を元に戻してみてください。先の私の回答では、フォントを
    「MM_LOMETRIC あるいは MM_HIMETRIC で生成する」とは書きましたが、
    「MM_LOMETRIC あるいは MM_HIMETRIC で描画する」とは書いていません。
    
    
    MapMode は 1〜8 の 8 種類あります。指定するモードによっては、
    単位だけでなく軸の向きも変化していることに注意してください。
    
     (A) X 座標が右に、Y 座標が上に向かって増加していくもの
     (B) X 座標が右に、Y 座標が下に向かって増加していくもの
     (C) SetWindowExtEx() / SetViewportExtEx() で単位、向き、スケーリングを指定するもの
     http://www.kumei.ne.jp/c_lang/sdk/sdk_55.htm
     http://yamatyuu.net/computer/program/sdk/gdi/mapmode/index.html
    
    ---
    
    (A) 右向き、上向きな MapMode
     1 … MM_TEXT。1 デバイスピクセル単位の物理座標系。
     6 … MM_TWIPS。0.05ポイント単位(1/1440インチ単位)の論理座標系。
    
    (B) 右向き、下向きな MapMode
     2 … MM_LOMETRIC。0.1 ミリ単位の論理座標系。
     3 … MM_HIMETRIC。0.01 ミリ単位の論理座標系。
     4 … MM_LOENGLISH。0.01 インチ単位の論理座標系。
     5 … MM_HIENGLISH。0.001 インチ単位の論理座標系。
    
    (C) 単位、向き、スケーリングを任意に指定できる MapMode
     7 … MM_ISOTROPIC。異方性ユーザー定義単位系。任意の単位、向き、スケーリングを持つ。
     8 … MM_ANISOTROPIC。等方性ユーザー定義単位系。X 軸と Y 軸の 1 単位が等しい。

違反を報告
引用返信
■35215 / ResNo.9)  Re[8]: VB.NetでVB6.0と同じFontを指定しても同様に印刷されない
□投稿者/ ゆりりん 一般人(6回)-(2022/11/02(Wed) 11:23:32)
  • アイコン> 描画位置を変更したくない場合は、GetMapMode と SetMapMode をペアで使うようにして、
    > フォント作成後、描画時に座標系を元に戻してみてください。先の私の回答では、フォントを
    > 「MM_LOMETRIC あるいは MM_HIMETRIC で生成する」とは書きましたが、
    > 「MM_LOMETRIC あるいは MM_HIMETRIC で描画する」とは書いていません。
    >
    そういうことだったのですね。
    よくわかっていませんでした。

    『描画位置の座標』はピクセルで計算していたので、
    MM_TEXTの指定にしたら、きちんと印刷されるようになりました。

    今までどうもありがとうございました。


解決み!
違反を報告
引用返信

■記事リスト / レス記事表示 → [親記事-9]



■記事リスト / ▼下のスレッド / ▲上のスレッド
■35172 / 親記事)  Lableのカラー色を文字変数から変更したい
□投稿者/ ま〜 一般人(6回)-(2022/10/18(Tue) 17:28:16)
  • アイコン環境/言語:[Windows10 Basic ] 
    分類:[.NET] 

    こんにちは、TextBoxの件でお世話になりました
    その時教えて頂いた事をLableに対して猿真似で転用しようとしたのですが。。
    Dim pdBackColor = TypeDescriptor.GetProperties(RichTextBox2).Find("BackColor", False)

    Lable.BackColor = DirectCast(pdForeColor.Converter.ConvertFromInvariantString("255,245,222"), Color)

    とやって見ましたがこれでは駄目なようで理解しきって無い私には難しい所です
    どうか宜しくお願いします。
違反を報告
引用返信

▽[全レス5件(ResNo.1-5 表示)]
■35173 / ResNo.1)  Re[1]: Lableのカラー色を文字変数から変更したい
□投稿者/ KOZ 一般人(3回)-(2022/10/18(Tue) 18:24:38)
  • アイコン
    No35172に返信(ま〜さんの記事)
    > Dim pdBackColor = TypeDescriptor.GetProperties(RichTextBox2).Find("BackColor", False)
    > Lable.BackColor = DirectCast(pdForeColor.Converter.ConvertFromInvariantString("255,245,222"), Color)
    
    pdBackColor/pdForeColor, RichTextBox2/Lable とバラバラですね。
    
    > とやって見ましたがこれでは駄目なようで理解しきって無い私には難しい所です
    
    理解できるまで弁士さんの回答を読み直すといいんじゃないでしょうか。

違反を報告
引用返信
■35175 / ResNo.2)  Re[1]: Lableのカラー色を文字変数から変更したい
□投稿者/ 魔界の仮面弁士 大御所(1458回)-(2022/10/18(Tue) 20:29:28)
  • アイコンNo35172に返信(ま〜さんの記事)
    > その時教えて頂いた事をLableに対して猿真似で転用しようとしたのですが。。
    Label が 3 回とも
    Lable と誤記っているのはさておき。

    Label1.BackColor = RichTextBox2.BackColor
    の動作を文字列経由で受け渡したい、という状況でしょうか。


    アンビエント等を意識せず、現在のプロパティ値を文字列化/復元するだけなら

     Dim cc As New ColorConverter()
     MessageBox.Show(cc.ConvertToInvariantString(Button1.ForeColor))

     Dim ic As New ImageConverter()
     MessageBox.Show(ic.ConvertToInvariantString(Button1.BackgroundImage))

     Dim fc As New FontConverter()
     MessageBox.Show(fc.ConvertToInvariantString(Button1.Font))

    のように、プロパティに応じた型コンバーターを用意することで、
    文字列への変換 & 文字列からの復元作業を行うこともできます。

    これらの型コンバーターは、先に使っていた
     pdForeColor.Converter
    の部分にあたります。


    Enabled プロパティなどのように、単純に現在値を保存してはならないメンバーについては
    やはり型コンバーターを使う前に、PropertyDescriptor を併用した方が良いですけれどね。
    (ShouldSerializeValue が False なら、現在の値を保存してはならないので)


    より厳密に言えば、SerializationVisibility が Content なプロパティ
    (TreeView の Nodes プロパティなど)も考慮する必要がありますし、
    設定順に意味のあるプロパティ(NumericUpDown の Value, Minimum, Maximum) などに対しては
    ISupportInitialize を併用しなければならないといったように、
    追加の作業を求められるプロパティもあったりするのが面倒なところなのですが。


    > Dim pdBackColor = TypeDescriptor.GetProperties(RichTextBox2).Find("BackColor", False)
    > Lable.BackColor = DirectCast(pdForeColor.Converter.ConvertFromInvariantString("255,245,222"), Color)

    Label の BackColor を設定することが目的なのであれば、
    何故、TypeDescriptor.GetProperties(RichTextBox2) を使うのですか?

    No35164 でも説明していますが、
    TypeDescriptor.GetProperties(X) で読み書きできるプロパティは、基本的には
    X 型のコントロールに対してです。Y 型のコントロールのプロパティに対しては
    TypeDescriptor.GetProperties(Y) でアクセスしてください。


    Dim rtbProps = TypeDescriptor.GetProperties(RichTextBox1)
    Dim rtbBackColor = rtbProps.Find("BackColor", False)
    MessageBox.Show(rtbBackColor.Converter.ConvertToInvariantString(RichTextBox1))


    .Find メソッドで個別に取り出す代わりに、
    すべてを列挙するならこんな感じ。

    Dim rtbProps = TypeDescriptor.GetProperties(RichTextBox1)
    For Each p As PropertyDescriptor In rtbProps
      Debug.WriteLine(StrDup(20, "-"c))
      Debug.WriteLine("DisplayName: " & p.DisplayName)
      Debug.WriteLine("Name: " & p.Name)
      Debug.WriteLine("Category: " & p.Category)
      Debug.WriteLine("Description: " & p.Description)
      Debug.WriteLine("DesignTimeOnly: " & p.DesignTimeOnly)
      Debug.WriteLine("IsBrowsable: " & p.IsBrowsable)
      Debug.WriteLine("IsReadOnly: " & p.IsReadOnly)
      Debug.WriteLine("SerializationVisibility: " & p.SerializationVisibility)
      Debug.WriteLine("GetChildProperties.Count: " & p.GetChildProperties().Count)

      Debug.WriteLine("ShouldSerializeValue(): " & p.ShouldSerializeValue(RichTextBox1))
      Debug.WriteLine("Value(): """ & p.Converter.ConvertToInvariantString(p.GetValue(RichTextBox1)) & """")
    Next


    なお、 PropertyDescriptor では無く PropertyInfo を列挙する手法もあります。
    永続化を目的として使う場合は、PropertyDescriptor の方が良さそうですが。

    Dim t As Type = RichTextBox1.GetType()
    For Each p As PropertyInfo In t.GetProperties()
      Debug.WriteLine(StrDup(20, "-"c))
      Debug.WriteLine("Name: " & p.Name)
      Debug.WriteLine("CanRead: " & p.CanRead)
      Debug.WriteLine("CanWrite: " & p.CanWrite)

      Debug.WriteLine("Value(): """ & String.Format("{0}", p.GetValue(RichTextBox1)) & """")
    Next
違反を報告
引用返信
■35176 / ResNo.3)  Re[2]: Lableのカラー色を文字変数から変更したい
□投稿者/ ま〜 一般人(8回)-(2022/10/19(Wed) 13:05:52)
  • アイコンいつもありがとうございます

    > Lable と誤記っているのはさておき。
    はい、間違ったスペルでコピペしたみたいです

    > Label1.BackColor = RichTextBox2.BackColor
    > の動作を文字列経由で受け渡したい、という状況でしょうか。
    ここも、誤記でlabelが正です

    Dim pdBackColor = TypeDescriptor.GetProperties(Label1).Find("BackColor", False)
    Label2.BackColor = DirectCast(pdForeColor.Converter.ConvertFromInvariantString("255,245,222"), Color)
    で上手く行きました

    原因は新しく作ったFormの先頭にImports System.ComponentModelが無かった為です。
    以前、教えて頂いた時のFormには書いてあったのですが今回それが無かった為に
    TypeDescriptorで構文エラーになっていました。
    以前色々とやってる中で何処かで見つけて書いていたもので何故必要なのかも理解せずに書いてましたので構文エラーとはならず気づかないまま。あれやこれややってました。。
    参照設定だけでは駄目なのでしょうか?
    何を基準にImports したら良いのか分からないですね。

    それと、またまた棚ぼたの文例ありがとうございます。
    凄く勉強になりました。

    然しながら
    > 永続化を目的として使う場合は、PropertyDescriptor の方が良さそうですが。
    > Dim t As Type = RichTextBox1.GetType()
    > For Each p As PropertyInfo In t.GetProperties()
    のPropertyInfoで構文エラーとなります。要因は上記と同じく何かImportsしなくては?。。。

解決み!
違反を報告
引用返信
■35178 / ResNo.4)  Re[3]: Lableのカラー色を文字変数から変更したい
□投稿者/ 魔界の仮面弁士 大御所(1459回)-(2022/10/19(Wed) 13:58:45)
  • アイコンNo35176に返信(ま〜さんの記事)
    >>For Each p As PropertyInfo In t.GetProperties()
    > のPropertyInfoで構文エラーとなります。要因は上記と同じく何かImportsしなくては?。。。

    PropertyInfo クラスの解説を見てみましょう。
    https://learn.microsoft.com/ja-jp/dotnet/api/system.reflection.propertyinfo?view=netframework-4.8

    冒頭の「定義」を見ると、PropertyInfo クラスは、
     名前空間:System.Reflection
    と書かれていることが分かるかと思いますので、この名前空間を明示してください。


    あるいは PropertyInfo の下に赤波線が出ていると思いますので、
    破線の PropertyInfo の上で [Alt]+[Shift]+[F10] を押すと表示される、
    修正候補から選ぶという手もあります。キーボード操作の他、
    赤破線の箇所をクリックすると表示される電球マークをマウス操作しても OK です。


    ということで、具体的な修正方法を 3 案挙げておきます。


    修正案1) プロジェクトのプロパティの [参照]-[インポートされた名前空間]
    にて「System.Reflection」にチェックを入れる

    修正案2) 該当の .vb ファイルの先頭に Imports 文を書く
    「Imports System.Reflection」


    修正案3) クラス名の前に名前空間を明示する…
    a) PropertyInfo
    b) Reflection.PropertyInfo
    c) System.Reflection.PropertyInfo
    d) Global.System.Reflection.PropertyInfo
違反を報告
引用返信
■35190 / ResNo.5)  Re[4]: Lableのカラー色を文字変数から変更したい
□投稿者/ ま〜 一般人(12回)-(2022/10/21(Fri) 17:21:39)
  • アイコン魔界さんへ
    勉強になります
    いつもありがとうございます。

解決み!
違反を報告
引用返信

■記事リスト / レス記事表示 → [親記事-5]



■記事リスト / ▼下のスレッド / ▲上のスレッド
■35169 / 親記事)  Urlにアクセスするとダウンロードされるファイルを捕まえる
□投稿者/ Wan 付き人(75回)-(2022/10/17(Mon) 17:03:25)
  • アイコン環境/言語:[VisualBasic2019 Windows10 Basic VSTO Framework4.7.2] 
    分類:[.NET] 

    "https://f.irbank.net/files/1944/qq-net-sales.csv"
    上記のUrlにアクセスすると、csvファイルがダウンロードされます。
    このファイルを捕まえて、行単位でループさせたいです。
    次のコードでいけるかな?って思ったのですが、指定されたパスのフォーマットはサポートされていませんとでてしまいます。
    
    一旦Excelファイルに取り込んで、処理しているのですが、直接csvファイルを扱う方法を教えて頂けないでしょうか?
    Dim MyWorkBook As Excel.Workbook = Globals.ThisWorkbook.Application.Workbooks.Open("https://f.irbank.net/files/1944/qq-net-sales.csv")
    
    宜しくお願い致します。
    
    
    Dim sr As StreamReader = New   StreamReader("https://f.irbank.net/files/1944/qq-net-sales.csv")
    While Not sr.EndOfStream
      Dim line As String = sr.ReadLine()
       Dim values As String() = line.Split(","c)
       Dim lists As List(Of String) = New List(Of String)()
       lists.AddRange(values)
       For Each list As String In lists
        System.Console.Write("{0} ", list)
       Next
       System.Console.WriteLine()
    End While

違反を報告
引用返信

▽[全レス2件(ResNo.1-2 表示)]
■35170 / ResNo.1)  Re[1]: Urlにアクセスするとダウンロードされるファイルを捕まえる
□投稿者/ 魔界の仮面弁士 大御所(1455回)-(2022/10/17(Mon) 22:20:54)
  • アイコンNo35169に返信(Wanさんの記事)
    > 一旦Excelファイルに取り込んで、処理しているのですが、
    > 直接csvファイルを扱う方法を教えて頂けないでしょうか?

    えぇと……これはまた、なかなかに変則的な CSV データですね…?
    先頭 4 行が無ければ、 5 列構成の一般的な CSV と言えるのですが。


    ・文字コード:UTF-8 (BOM 無)
    ・改行種別:すべてのレコード末尾に LF 付与
    ・列数:行によって可変……珍しい
    ・空行:あり……0列とみなすべきか1列とみなすべきかが悩みどころ
    ・データ囲み引用符:「"」、ただし無いこともあるのでデータの一部として扱方が良さそう
    ・データ内改行:なし
    ・データ内カンマ:なし


    > System.Console.Write("{0} ", list)
    VSTO の場合、 Console が使えるとは限らないのでは…?


    > 直接csvファイルを扱う方法を教えて頂けないでしょうか?
    Tips ページのこのあたりで出来ませんでしたか?
    https://dobon.net/vb/dotnet/internet/webclientopenread.html
    https://dobon.net/vb/dotnet/internet/webrequest.html


    (案1) WebClient.DownloadString を使う

    Dim wc As New System.Net.WebClient()
    Dim rawData As String = wc.DownloadString("https://f.irbank.net/files/1944/qq-net-sales.csv")
    Dim csv()() As String = rawData.Split(ControlChars.Lf).Select(Function(line) line.Split(","c)).ToArray()


    (案2) My.Computer.Network.DownloadFile を使う

    Dim tmp = My.Computer.FileSystem.GetTempFileName()
    My.Computer.FileSystem.DeleteFile(tmp)
    My.Computer.Network.DownloadFile("https://f.irbank.net/files/1944/qq-net-sales.csv", tmp)
    Dim csv()() As String = File.ReadLines(tmp).Select(Function(line) line.Split(","c)).ToArray()
    My.Computer.FileSystem.DeleteFile(tmp)
違反を報告
引用返信
■35199 / ResNo.2)  Re[2]: Urlにアクセスするとダウンロードされるファイルを捕まえる
□投稿者/ Wan 付き人(76回)-(2022/10/25(Tue) 17:05:31)
  • アイコン返事が遅くなり申し訳ありません。
    教えて頂いた内容で、できました。
    ありがとうございました。

解決み!
違反を報告
引用返信

■記事リスト / レス記事表示 → [親記事-2]



■記事リスト / ▲上のスレッド
■34964 / 親記事)  DataGridViewの特定セルにボタンを配置する方法
□投稿者/ り 一般人(4回)-(2021/11/17(Wed) 16:05:58)
  • アイコン環境/言語:[C#] 
    分類:[.NET] 

    画像のような表を作成したいのですが、
    特定のセルにのみボタンを配置することは可能でしょうか。
548×394 => 250×179
イメージ
IMAGE.png
/6KB
違反を報告
引用返信

▽[全レス5件(ResNo.1-5 表示)]
■34965 / ResNo.1)  Re[1]: DataGridViewの特定セルにボタンを配置する方法
□投稿者/ 魔界の仮面弁士 大御所(1411回)-(2021/11/17(Wed) 18:12:54)
  • アイコンNo34964に返信(りさんの記事)
    > 画像のような表を作成したいのですが、
    > 特定のセルにのみボタンを配置することは可能でしょうか。

    dataGridView1[0, 0] = new DataGridViewButtonCell { UseColumnTextForButtonValue = true };
違反を報告
引用返信
■34966 / ResNo.2)  Re[2]: DataGridViewの特定セルにボタンを配置する方法
□投稿者/ り 一般人(5回)-(2021/11/19(Fri) 08:52:28)
  • アイコンNo34965に返信(魔界の仮面弁士さんの記事)
    > ■No34964に返信(りさんの記事)
    >>画像のような表を作成したいのですが、
    >>特定のセルにのみボタンを配置することは可能でしょうか。
    >
    > dataGridView1[0, 0] = new DataGridViewButtonCell { UseColumnTextForButtonValue = true };

    返信遅くなりました。
    早急に回答していただきありがとうございます!
    しかし、私の理解不足だと思うのですが、これだけでは実現できませんでした。
    他に記述すべき内容がありましたら、教えていただきたいです...
違反を報告
引用返信
■34974 / ResNo.3)  Re[3]: DataGridViewの特定セルにボタンを配置する方法
□投稿者/ り 一般人(6回)-(2021/12/06(Mon) 11:35:47)
  • アイコン試行錯誤したらできました。
解決み!
違反を報告
引用返信
■35338 / ResNo.4)  Re[4]: DataGridViewの特定セルにボタンを配置する方法
□投稿者/ なかい 一般人(1回)-(2023/01/18(Wed) 20:47:46)
  • アイコンNo34974に返信(りさんの記事)
    > 試行錯誤したらできました。

    お世話様です。
    どのようにして実現できましたのでしょうか?
    同じようなことで試行錯誤しています。
    教えていただけたら、ありがたいです。

違反を報告
引用返信
■35339 / ResNo.5)  Re[5]: DataGridViewの特定セルにボタンを配置する方法
□投稿者/ 魔界の仮面弁士 大御所(1521回)-(2023/01/19(Thu) 08:56:36)
  • アイコンNo35338に返信(なかいさんの記事)
    > どのようにして実現できましたのでしょうか?
    > 同じようなことで試行錯誤しています。
    > 教えていただけたら、ありがたいです。

    他者が解決済みとしているスレッドを未解決に戻して質問するのではなく、
    新たなスレッドを立ち上げたうえで、そちらで質問していただけますでしょうか。
    (投稿時に、このスレッドの URL もしくは投稿 No を貼ってもらえると助かります)

    なお、質問する際には
     ・言語指定(VB なのか C# なのか)
     ・Visual Studio のバージョン
     ・現状、どこで問題が起きているのか、あるいは No34965 のどこが分からないか
    などを明記していただけますようお願いします。

    申し訳ありませんが、こちらのスレッドは解決済みに戻させていただきます。
解決み!
違反を報告
引用返信

■記事リスト / レス記事表示 → [親記事-5]






Mode/  Pass/


- Child Tree -