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

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

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



■記事リスト / ▼下のスレッド
■35401 / 親記事)  グリッド表示レコードをJSONに変換
□投稿者/ けい 一般人(1回)-(2023/05/01(Mon) 17:08:45)
  • アイコン環境/言語:[Windows10、VB.NET2022] 
    分類:[.NET] 

    お世話になります。

    DataGridView1に表示されているレコードを、
    JSON形式に変換したいと考えています。

    レコードはこちらの内容です(2列3行)。
    【商品(クラス名:Shohin)】
    商品C=10000
    商品名=商品A
    商品C=10001
    商品名=商品B
    商品C=10002
    商品名=商品C

    VB.NETでJSONを扱う方法に、
    元々VB.NETに備わっている機能を使う、
    JSON.NETを使う、
    の2種類があると思いますが、
    ここではセキュリティの面もあり、
    前者を使います。

    DataGridView1にレコードが表示されており、
    Button1を押すと、
    TextBox1にJSON変換データが表示されます。
    (商品データ以外の前後の部分はここでは割愛します。)

    コードは以下の通りです。

    Public Class Shohin
    Public Property 商品C As Integer
    Public Property 商品名 As String
    End Class

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim data() As Shohin
    ReDim data(2)
    Dim sw As New System.Runtime.Serialization.Json.DataContractJsonSerializer(GetType(Shohin))
    Dim ms As New MemoryStream()
    Dim output As String
    For i = 0 To 2
    data(i) = New Shohin
    data(i).商品C = DataGridView1.Rows(i).Cells(0).Value
    data(i).商品名 = DataGridView1.Rows(i).Cells(1).Value
    sw.WriteObject(ms, data(i))
    Next
    output = Encoding.UTF8.GetString(ms.ToArray())
    TextBox1.Text = output
    End Sub

    上記のコードを実行しますと、
    表示結果が、
    次のようになります。

    {"商品C":10000,"商品名":"商品A"}
    {"商品C":10001,"商品名":"商品B"}
    {"商品C":10002,"商品名":"商品C"}

    これですと、{}の間にカンマ(,)がついておりません。
    {"商品C":10000,"商品名":"商品A"}
    ,{"商品C":10001,"商品名":"商品B"}
    ,{"商品C":10002,"商品名":"商品C"}
    のようにしたいです。

    上記Forループ内で、
    1行目ではない場合は、
    sw.WriteObject(ms, ",")
    sw.WriteObject(ms, data(i))
    と記述しますと、
    表示結果が下記のようになってしまいます。

    {"商品C":10000,"商品名":"商品A"}
    ","{"商品C":10001,"商品名":"商品B"}
    ","{"商品C":10002,"商品名":"商品C"}

    いろいろ調べておりますが、
    わかりませんでした。

    まことにお手数と存じますが、
    どうぞよろしくお願いいたします。


違反を報告
引用返信

▽[全レス5件(ResNo.1-5 表示)]
■35402 / ResNo.1)  Re[1]: グリッド表示レコードをJSONに変換
□投稿者/ 魔界の仮面弁士 大御所(1541回)-(2023/05/01(Mon) 18:32:48)
  • アイコン
    No35401に返信(けいさんの記事)
    > ここではセキュリティの面もあり、
    > 前者を使います。

    リファレンス上では、DataContractJsonSerializer クラスではなく
    System.Text.Json 名前空間の API の利用が推奨されていますね。

    https://learn.microsoft.com/ja-jp/dotnet/api/system.runtime.serialization.json.datacontractjsonserializer?view=netframework-4.8.1


    > これですと、{}の間にカンマ(,)がついておりません。
    それは For ループで
     For i = 0 To 2
      sw.WriteObject(ms, data(i))
     Next
    という出力方法をとっているからですよね。

    Array を丸ごと渡しましょう。

     Dim data() As Shohin = {
      New Shohin With {.商品C = 10000, .商品名 = "商品A"},
      New Shohin With {.商品C = 10001, .商品名 = "商品B"},
      New Shohin With {.商品C = 10002, .商品名 = "商品C"}
     }
     Dim serializer As New DataContractJsonSerializer(GetType(Shohin()))
     Dim ms As New MemoryStream()
     serializer.WriteObject(ms, data)
     TextBox1.Text = System.Text.Encoding.UTF8.GetString(ms.ToArray())
違反を報告
引用返信
■35403 / ResNo.2)  Re[2]: グリッド表示レコードをJSONに変換
□投稿者/ けい 一般人(2回)-(2023/05/01(Mon) 19:31:17)
  • アイコンNo35402に返信(魔界の仮面弁士さんの記事)
    > Array を丸ごと渡しましょう。

    ありがとうございます^^。
    やってみます。

    また、1つの課題なのですが、
    実際には、商品レコードの数がソフト実行の度に異なるため、
    下記のように「New Shohin With」を前もって決まった数だけ書いておけないという点があります。
    この部分で、毎回読み取るレコードの数だけ、
    New Shohin Withをループさせるようなことができるか、
    が課題です。

    研究してみます。


    >  Dim data() As Shohin = {
    >   New Shohin With {.商品C = 10000, .商品名 = "商品A"},
    >   New Shohin With {.商品C = 10001, .商品名 = "商品B"},
    >   New Shohin With {.商品C = 10002, .商品名 = "商品C"}
    >  }
    >  Dim serializer As New DataContractJsonSerializer(GetType(Shohin()))
    >  Dim ms As New MemoryStream()
    >  serializer.WriteObject(ms, data)
    >  TextBox1.Text = System.Text.Encoding.UTF8.GetString(ms.ToArray())
違反を報告
引用返信
■35404 / ResNo.3)  Re[3]: グリッド表示レコードをJSONに変換
□投稿者/ けい 一般人(3回)-(2023/05/01(Mon) 19:36:09)
  • アイコンNo35402に返信(魔界の仮面弁士さんの記事)
    data()を配列と考え、
    宣言の後、
    レコードの数を満たすまで、
    New Shohin With行を要素として追加していく、
    ことができないか、試してみます。
違反を報告
引用返信
■35405 / ResNo.4)  Re[3]: グリッド表示レコードをJSONに変換
□投稿者/ 魔界の仮面弁士 大御所(1542回)-(2023/05/01(Mon) 19:48:46)
  • アイコンNo35403に返信(けいさんの記事)
    > 下記のように「New Shohin With」を前もって決まった数だけ書いておけないという点があります。

    No35401 の元投稿が Dim data() As Shohin という
    配列宣言だったからそれを真似ただけでのことです。
    別に配列でも List(Of ) でも同じことですよ。

    件数が不定なら、List(Of ) の方が良いでしょうね。

    ' 実際は data.Add(〜) を繰り返す感じになるはず
    Dim data As New List(Of Shohin)() From {
      New Shohin With {.商品C = 10000, .商品名 = "商品A"},
      New Shohin With {.商品C = 10001, .商品名 = "商品B"},
      New Shohin With {.商品C = 10002, .商品名 = "商品C"}
    }

    'GetType を配列から List(Of ) に変更
    Dim serializer As New DataContractJsonSerializer(GetType(List(Of Shohin)))
    Dim ms As New MemoryStream()
    serializer.WriteObject(ms, data)

    TextBox1.Text = System.Text.Encoding.UTF8.GetString(ms.ToArray())

違反を報告
引用返信
■35406 / ResNo.5)  Re[4]: グリッド表示レコードをJSONに変換
□投稿者/ けい 一般人(4回)-(2023/05/02(Tue) 11:59:46)
  • アイコンNo35405に返信(魔界の仮面弁士さんの記事)

    ありがとうございます。
    以下のコードでできました。


    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

    Dim data As New List(Of Shohin)
    Dim serializer As New DataContractJsonSerializer(GetType(List(Of Shohin)))
    Dim ms As New MemoryStream()

    data.Add(New Shohin With {.商品C = 10000,.商品名 = "商品A"})
    data.Add(New Shohin With {.商品C = 10001,.商品名 = "商品B"})
    data.Add(New Shohin With {.商品C = 10002,.商品名 = "商品C"})

    serializer.WriteObject(ms, data)
    TextBox1.Text = Encoding.UTF8.GetString(ms.ToArray())

    End Sub


    実際には、レコードの数だけ、
    data.AddをFor〜Nextループさせます。

    解決できました。
    まことにありがとうございました。
    勉強になりました。
    今後ともどうぞよろしくお願い申し上げます。
解決み!
違反を報告
引用返信

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



■記事リスト / ▼下のスレッド / ▲上のスレッド
■35389 / 親記事)  Seleniumで開いているページのTableを編集したい
□投稿者/ とととんとん 一般人(1回)-(2023/02/16(Thu) 17:56:18)
  • アイコン環境/言語:[C#/.NET Framework 4.7.2/Windows10] 
    分類:[.NET] 

    開いているページのTableの特定列にある文字列を
    置き換えたいと思っています。(HTML全部取得してReplaceして表示も可)

    ページを開くところまでは問題なくできたのですが、
    Tableにあるデータの置き換え方法が分かりません。
    調べてもSendKeysしか出てきません。

    F12で開いたときに編集できるものなので
    Seleniumでも編集できると思っています。

    どのようにしたらテキストの置き換えができますか?

    .NET Framework 4.7.2
違反を報告
引用返信

▽[全レス5件(ResNo.1-5 表示)]
■35390 / ResNo.1)  Re[1]: Seleniumで開いているページのTableを編集したい
□投稿者/ Hongliang 大御所(638回)-(2023/02/16(Thu) 20:03:57)
  • アイコンJavaScriptで書き換えるということになるかと思います。
    SeleniumでのJavaScriptの実行は、
    https://qastack.jp/programming/6229769/execute-javascript-using-selenium-webdriver-in-c-sharp
    まあこの辺とかまず参考にしてみてください。
違反を報告
引用返信
■35391 / ResNo.2)  Re[1]: Seleniumで開いているページのTableを編集したい
□投稿者/ 魔界の仮面弁士 大御所(1538回)-(2023/02/16(Thu) 21:51:43)
  • アイコンNo35389に返信(とととんとんさんの記事)
    > Seleniumでも編集できると思っています。

    Selenium についてはご存じなのですね。
    ExecuteScript までの流れは Hongliang さんが紹介されているので、
    私からは DOM 操作について言及してみます。


    > 開いているページのTableの特定列にある文字列を
    > 置き換えたいと思っています。(HTML全部取得してReplaceして表示も可)

    該当列の TH/TD タグの内容を列挙すれば良いと思います。

    TR タグの cells プロパティから、TH/TD タグを拾うことができます。
    https://developer.mozilla.org/ja/docs/Web/API/HTMLTableRowElement

    各セルの cellIndex プロパティからは、行内での列番号を得ることもできます。
    https://developer.mozilla.org/ja/docs/Web/API/HTMLTableCellElement


    ただし、結合セルや非表示セルがある場合は注意が必要です。

    1. TH/TD 要素の colSpan プロパティが 2 以上を返すケース
    2. TR 要素の rowspan プロパティが 2 以上を返すケース
    3. TR の子要素(つまりTH/TD)が非表示(display:none スタイル)が設定されているケース

    こうした構成の TABLE では、Web 上の見た目の列番号と、
    HTML の階層における cellIndex の値が一致しなくなることがあります。
違反を報告
引用返信
■35392 / ResNo.3)  Re[2]: Seleniumで開いているページのTableを編集したい
□投稿者/ 魔界の仮面弁士 大御所(1539回)-(2023/02/17(Fri) 00:49:28)
  • アイコンNo35391に追記(魔界の仮面弁士の記事)
    >>開いているページのTableの特定列にある文字列を
    >>置き換えたいと思っています。(HTML全部取得してReplaceして表示も可)
    > 該当列の TH/TD タグの内容を列挙すれば良いと思います。

    おっと。列挙後のデータの置き換えについての説明が漏れていましたね。

    TH/TD タグの中身を置き換えるために、
    textContent プロパティまたは innerHTML プロパティを利用できます。
    https://qiita.com/iwasaki-hub/items/9f339ddb7c20ec804723
違反を報告
引用返信
■35393 / ResNo.4)  Re[3]: Seleniumで開いているページのTableを編集したい
□投稿者/ とととんとん 一般人(1回)-(2023/02/17(Fri) 17:52:33)
  • アイコンHongliang様、魔界の仮面弁士様、ありがとうございました!
    出来ました……!!!
    たぶん出来る人からみたら適当すぎてダメだとは思いますが、
    動けば良いのです……!本当にありがとうございます!!

    参考までに、ソース載せときます。

    string scripts = "var sampleElements = document.getElementsByClassName('test-group'); for (var i = 0, len = sampleElements.length; i < len; i++) { sampleElements[i].innerHTML = sampleElements[i].innerHTML.replace('置換前', '置換後') }";
    //var sampleElements = document.getElementsByClassName('test-group');
    //for (var i = 0, len = sampleElements.length; i < len; i++)
    //{
    // sampleElements[i].innerHTML = sampleElements[i].innerHTML.replace('置換前', '置換後')
    //}

    chrome.ExecuteScript(scripts);
解決み!
違反を報告
引用返信
■35394 / ResNo.5)  Re[4]: Seleniumで開いているページのTableを編集したい
□投稿者/ 魔界の仮面弁士 大御所(1540回)-(2023/02/17(Fri) 22:08:25)
  • アイコン
    No35389に返信(とととんとんさんの記事)
    ■No35393に返信( とととんとんさんの記事)
    > □投稿者/ とととんとん 一般人(1回)
    
    どうして「1回」のままなのかと思ったら…よく見たら別名という罠!
    
    
    > 参考までに、ソース載せときます。
    文字列内での改行が必要な場合、「@"〜"」を使えますよ。
    https://learn.microsoft.com/ja-jp/dotnet/csharp/language-reference/tokens/verbatim
    https://ufcpp.net/study/csharp/st_string.html
    
    
    string scripts = @"
     const sampleElements = document.getElementsByClassName('test-group');
     for (let i = 0, len = sampleElements.length; i < len; i++) {
       sampleElements[i].innerHTML = sampleElements[i].innerHTML.replace(arguments[0], arguments[1]);
     }
    ";
    chrome.ExecuteScript(scripts, "置換前", "置換後");

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

■記事リスト / レス記事表示 → [親記事-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]



■記事リスト / ▼下のスレッド / ▲上のスレッド
■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]



■記事リスト / ▲上のスレッド
■35125 / 親記事)  DatagridViewでファンクションキーを止めたい
□投稿者/ はる 一般人(9回)-(2022/08/23(Tue) 20:26:12)
  • アイコン環境/言語:[Windows10 C# ] 
    分類:[.NET] 

    いつもお世話になります。

    DataGridViewで行を選択し、ファンクションキーの「F4」を押したら
    行削除としているんですが、勝手に並び変わってしまいます。
    DataGridViewの既定のファンクションキーだとか。

    ヘッダクリックの並び替えは残したいのでSortModeは止めれません。

    ファンクションキーの動作を止めることはできませんか?
違反を報告
引用返信

▽[全レス5件(ResNo.1-5 表示)]
■35126 / ResNo.1)  Re[1]: DatagridViewでファンクションキーを止めたい
□投稿者/ Hongliang 大御所(632回)-(2022/08/23(Tue) 20:52:31)
  • アイコンhttps://docs.microsoft.com/ja-jp/dotnet/desktop/winforms/controls/default-keyboard-and-mouse-handling-in-the-windows-forms-datagridview-control
    こちらによれば、F4キーはコンボボックス列のセルを編集モードにしてドロップダウンを開く、という機能であり、ソートとは関係ないように見えます。
    実際簡単に試してみると、F4キーを押しても特にソート状態に変化はなく、コンボボックス列の場合は上記リンク先通りに編集モードに入ります。

    > DataGridViewの既定のファンクションキーだとか。
    こちらはどこからの情報でしょうか?
    作成されているアプリケーションにおけるF4キーの機能は、そのアプリケーションで作りこまれているものではないでしょうか。
違反を報告
引用返信
■35127 / ResNo.2)  Re[2]: DatagridViewでファンクションキーを止めたい
□投稿者/ はる 一般人(10回)-(2022/08/23(Tue) 21:07:47)
  • アイコンNo35126に返信(Hongliangさんの記事)
    > https://docs.microsoft.com/ja-jp/dotnet/desktop/winforms/controls/default-keyboard-and-mouse-handling-in-the-windows-forms-datagridview-control
    > こちらによれば、F4キーはコンボボックス列のセルを編集モードにしてドロップダウンを開く、という機能であり、ソートとは関係ないように見えます。
    > 実際簡単に試してみると、F4キーを押しても特にソート状態に変化はなく、コンボボックス列の場合は上記リンク先通りに編集モードに入ります。

    すいません、間違えました「F3」です。
    Form_KeyDownで記載しているF3の処理は実行されるんですが、
    おまけに並び替えもされてしまうので、これを止めたいんです。
違反を報告
引用返信
■35128 / ResNo.3)  Re[3]: DatagridViewでファンクションキーを止めたい
□投稿者/ Hongliang 大御所(633回)-(2022/08/23(Tue) 21:18:42)
  • アイコンイベントハンドラ中で
    e.Handled = true
    のようにすれば、既定の処理が行われなくなります。

    なお前掲のページにあるように、DataGridView自身のKeyDownイベントでは編集モードでのキー入力には対応できないのでご注意ください。
違反を報告
引用返信
■35129 / ResNo.4)  Re[4]: DatagridViewでファンクションキーを止めたい
□投稿者/ はる 一般人(11回)-(2022/08/23(Tue) 21:45:15)
  • アイコンNo35128に返信(Hongliangさんの記事)


    できました!ありがとうございました。

解決み!
違反を報告
引用返信
■35130 / ResNo.5)  Re[3]: DatagridViewでファンクションキーを止めたい
□投稿者/ 魔界の仮面弁士 大御所(1441回)-(2022/08/23(Tue) 22:49:26)
  • アイコンNo35127に返信(はるさんの記事)
    >>https://docs.microsoft.com/ja-jp/dotnet/desktop/winforms/controls/default-keyboard-and-mouse-handling-in-the-windows-forms-datagridview-control
    > すいません、間違えました「F3」です。
    > Form_KeyDownで記載しているF3の処理は実行されるんですが、
    > おまけに並び替えもされてしまうので、これを止めたいんです。

    .NET Framework 4.7.2 以降において、F3 で並び替えが行われるのを止めるために


    (1) F3 並び替えが行われない ".NET Framework 4.7.1 以下" を用いる
    (2) アプリケーションの構成ファイルの runtime/AppContextSwitchOverrides で
     4.7.2 以降のアクセシビリティの強化を無効化する
    (3) AppContext.SetSwitch メソッドで、4.7.2 以降のアクセシビリティの強化を無効化する

    という選択肢もありますね。
    http://rucio.cloudapp.net/ThreadDetail.aspx?ThreadId=30447


    もっとも今回の対応としては、 Hongliang さんが書かれているように
    e.Handled を使う方が良いでしょうね。
解決み!
違反を報告
引用返信

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






Mode/  Pass/


- Child Tree -