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) | NomalVB.NETからcmdでpingを実行した時の結果(5) | NomalTabPageの背景色(5) | Nomalstyle.displayだと効率悪いから違うやり方をしたいです。(5) | Nomalグリッド表示レコードをJSONに変換(5) | NomalSeleniumで開いているページのTableを編集したい(5) | NomalMP4動画を再生する方法について(5) | NomalLableのカラー色を文字変数から変更したい(5) | NomalDatagridViewでファンクションキーを止めたい(5) | Nomalフォーム背景のみを半透明にしたい(5) | NomalCommandBuilderによって作られるCommandTextの内容(5) | NomalDataGridViewの特定セルにボタンを配置する方法(5) | 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) | Nomal1行で書くことできますか?(3) | 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読み出し元フォームの位置取得方法(2) | Nomalコンストラクターに続く{}の意味(2) | Nomalvb.netで7zの圧縮・解凍をしたい。(2) | Nomalツールボックスにtableadapterが表示されない(1) | Nomalアセンブリ情報が載らない(1) | Nomal二次元マップから値の取得(1) | NomalDataGridViewのドロップダウンリストの表示と選択後の値を分けたい(1) | NomalVSTOによるエクセルアドインのインストーラーでのアップデート(1) | Nomalクリスタルレポート 明細部のサブレポート(0) | Nomalインストーラにて、ローミングフォルダにファイルを配置したい(0) | NomalChart X軸上の描画を切り替えたい(0) |



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



■記事リスト / ▲上のスレッド
■35111 / 親記事)  フォーム背景のみを半透明にしたい
□投稿者/ よっし〜 一般人(11回)-(2022/07/26(Tue) 13:31:15)
  • アイコン環境/言語:[VS2013] 
    分類:[.NET] 

    お疲れ様です。度々の投稿で申し訳ございませんが、おおしえくださいませ。

    先の投稿(読み出し元フォームの位置取得方法)でご教示頂き、「出来る!」と思って進めてたのですが・・・
    半透明のフォームを親フォームに重ねて表示したいのですが、半透明(Opacity)を設定すると、フォームに載せたコントロールごと半透明となってしまいます。
    添付の画像の様に「フォームだけを半透明」する方法はありませんでしょうか??
    ちなみに添付画像は半透明のフォームだけを重ねて表示し、別のOpacity=100%のフォームをさらに重ねております。
    (親フォームを合わせて3フォームを重ねています)
    出来るには出来るのですが、コードが煩雑になりますので、何か良い方法は無いかと模索しております。

    お忙しいとは思いますが、宜しくご教示のほどお願いいたします。
804×601 => 250×186
イメージ
1658809874.png
/18KB
違反を報告
引用返信

▽[全レス5件(ResNo.1-5 表示)]
■35112 / ResNo.1)  Re[1]: フォーム背景のみを半透明にしたい
□投稿者/ 魔界の仮面弁士 大御所(1438回)-(2022/07/26(Tue) 14:50:11)
  • アイコンNo35111に返信(よっし〜さんの記事)
    > 添付の画像の様に「フォームだけを半透明」する方法はありませんでしょうか??

    タイトルなし枠無しの Form の背景色を、普段使わない色にしておき、
    その色を TransparencyKey に指定すれば、フォーム部が全透過状態の
    「コントロール部だけのフォーム」ができあがります。
    https://dobon.net/vb/dotnet/form/transparencykey.html

    そのフォームを、Opacity プロパティを設定した別フォームの手前に配置すれば
    フォームの数を 3 つから 2 つに減らせると思います。
    https://dobon.net/vb/dotnet/form/opacity.html


    > フォームに載せたコントロールごと半透明となってしまいます。
    TransparencyKey や Opacity は、フォーム全体に対して一括適用されるため
    コントロール部のみを除外するといったことはできません。

    フォーム 1 つのまま、部分的な半透明化を実現するためには、
    UpdateLayeredWindow API を直接呼び出す必要があります。

    フォームサイズが固定なのであれば、フォームサイズの PNG ファイルを用意し、
    あらかじめその画像内の透明度情報で、不透明箇所と半透明箇所を塗り分けます。
    それを UpdateLayeredWindow API に渡して適用すればできます。

    https://wiki.onakasuita.org/pukiwiki/?UpdateLayeredWindow
    https://dobon.net/vb/bbs/log3-44/26446.html


違反を報告
引用返信
■35113 / ResNo.2)  Re[2]: フォーム背景のみを半透明にしたい
□投稿者/ よっし〜 一般人(12回)-(2022/07/26(Tue) 15:50:12)
  • アイコンNo35112に返信(魔界の仮面弁士さんの記事)

    魔界の仮面弁士様、毎度お世話になり、申し訳ございません。

    > タイトルなし枠無しの Form の背景色を、普段使わない色にしておき・・・
    > フォームの数を 3 つから 2 つに減らせると思います。
    現在も親の上に半透明シート(?)を表示させ、その上にLabelを配置したフォームを表示させております。

    > フォーム 1 つのまま、部分的な半透明化を実現するためには、UpdateLayeredWindow API を直接呼び出す必要があります。
    > フォームサイズが固定なのであれば、フォームサイズの PNG ファイルを用意し、
    > あらかじめその画像内の透明度情報で、不透明箇所と半透明箇所を塗り分けます。
    > それを UpdateLayeredWindow API に渡して適用すればできます。
    記載先をお教え頂きましたが、なかなかのボリュームですね。
    まぁ簡単にできない事は分かっておりますので、ちょっとゴリゴリと試してみたいと思います。

    まずは御礼まで・・どうも有り難うございました。


1044×727 => 250×174
イメージ
20220726153947-min.png
/14KB
違反を報告
引用返信
■35114 / ResNo.3)  Re[3]: フォーム背景のみを半透明にしたい
□投稿者/ 魔界の仮面弁士 大御所(1439回)-(2022/07/26(Tue) 16:42:28)
  • アイコン
    No35113に返信(よっし〜さんの記事)
    > 現在も親の上に半透明シート(?)を表示させ、その上にLabelを配置したフォームを表示させております。
    
    半透明シートを被せて、下の親フォームを操作不能にしたいという意図でしょうか。
    
    であれば、親フォームにフォームサイズの Panel を全体表示しておき、
    その Panel の背景に、親フォームの内容を描画してはどうでしょう。
    
    
    (1) 親フォームに Panel1 を配置。これが半透明モドキになる。
     Panel1 は普段、Visible = False にしておく。
    
    (2) その Panel1 内に、子コントロールとして黄色の Panel2 を置き、
     Panel2 内に Label1 や Button1 を置く。
     Button1_Click のイベントにて「Panel1.Hide()」を記述。
    
    (3) 半透明表示のために、以下を実行。
    
    'Panel1 は Visible = False な状態で開始する事
    Panel1.Visible = False
    
    Dim cr = Me.ClientRectangle
    Dim r = Me.RectangleToScreen(cr)
    Dim bmp As New Bitmap(cr.Width, cr.Height)
    Using g = Graphics.FromImage(bmp)
        '画面キャプチャ
        g.CopyFromScreen(r.Location, New Point(0, 0), r.Size)
        '半透明のスモークをかける
        Using b As New SolidBrush(Color.FromArgb(180, Color.DarkSlateGray))
            g.FillRectangle(b, cr)
        End Using
    End Using
    
    'Panel1を重ねて表示
    Dim oldBmp = Panel1.BackgroundImage
    Panel1.BackgroundImage = bmp
    If oldBmp IsNot Nothing Then
        oldBmp.Dispose()
    End If
    Panel1.BringToFront()
    Panel1.SetBounds(cr.X, cr.Y, cr.Width, cr.Height)
    Panel1.Visible = True

違反を報告
引用返信
■35115 / ResNo.4)  Re[4]: フォーム背景のみを半透明にしたい
□投稿者/ よっし〜 一般人(13回)-(2022/07/27(Wed) 12:14:45)
  • アイコンNo35114に返信(魔界の仮面弁士さんの記事)

    魔界の仮面弁士様、早速のご教示、有り難うございます。
    > 半透明シートを被せて、下の親フォームを操作不能にしたいという意図でしょうか。
    > であれば、親フォームにフォームサイズの Panel を全体表示しておき、
    > その Panel の背景に、親フォームの内容を描画してはどうでしょう。
    そうです。まさにそうです。
    先の投稿の画面はサンプルで親フォームはスッキリしておりますが、実際の親フォームはゴチャゴチャしておりますので、
    予めパネルを貼らずに、動的に貼る様にしたいと思います。
    今後の為に、サンプルだけ貼らして頂きます。
    どうも、有り難うございました。

    Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
    Dim cr = Me.ClientRectangle
    Dim r = Me.RectangleToScreen(cr)
    Dim bmp As New Bitmap(cr.Width, cr.Height)
    Using g = Graphics.FromImage(bmp)
    '画面キャプチャ
    g.CopyFromScreen(r.Location, New Point(0, 0), r.Size)
    '半透明のスモークをかける
    Using b As New SolidBrush(Color.FromArgb(180, Color.DarkGray))
    g.FillRectangle(b, cr)
    End Using
    End Using

    Dim Pnl As New Panel
    Pnl.Parent = Me

    'Panel1を重ねて表示
    Dim oldBmp = Pnl.BackgroundImage
    Pnl.BackgroundImage = bmp
    If oldBmp IsNot Nothing Then oldBmp.Dispose()
    Pnl.BringToFront()
    Pnl.SetBounds(cr.X, cr.Y, cr.Width, cr.Height)
    Pnl.Visible = True
    Form4.ShowDialog(Me)
    Pnl.Visible = False
    Pnl.Dispose()
    End Sub


解決み!
違反を報告
引用返信
■35116 / ResNo.5)  Re[5]: フォーム背景のみを半透明にしたい
□投稿者/ 魔界の仮面弁士 大御所(1440回)-(2022/07/27(Wed) 13:50:17)
  • アイコンNo35115に返信(よっし〜さんの記事)
    > Form4.ShowDialog(Me)
    ShowDialog 後の Dispose の呼び出しが漏れているように見えました。
    https://dobon.net/vb/dotnet/form/showform.html

    Show の場合は、フォームが閉じられた時に自動的に Dispose され、メモリ上からアンロードされますが、
    ShowDialog の場合は、使用後に Dispose しないと、閉じられた後もメモリ上に残り続けます。


    それともあえてこの時点では Dispose しないようにしてあるだけで、
    別の場所で Dispose する仕様にしてあるのでしょうか。


    > Dim Pnl As New Panel
    > Pnl.Parent = Me
    > Dim oldBmp = Pnl.BackgroundImage

    これは冗長でしょう。

    新規パネルを、その都度生成するのであれば、
    上記の oldBmp は、常に Nothing ですよね。


    Dim cr = Me.ClientRectangle
    Dim r = Me.RectangleToScreen(cr)
    Using bmp As New Bitmap(cr.Width, cr.Height)
      Using g = Graphics.FromImage(bmp)
        g.CopyFromScreen(r.Location, New Point(0, 0), r.Size)
        Dim alpha As Integer = 255 * 80 \ 100 '不透明度 80%
        Using b As New SolidBrush(Color.FromArgb(alpha, SystemColors.AppWorkspace))
          g.FillRectangle(b, cr)
        End Using
      End Using
      Using pnl As New Panel()
        pnl.Parent = Me
        pnl.BackgroundImage = bmp
        pnl.BringToFront()
        pnl.SetBounds(cr.X, cr.Y, cr.Width, cr.Height)
        pnl.Visible = True

        'Using child As New Form4() With {.StartPosition = FormStartPosition.CenterParent}
        '  child.ShowDialog(Me)
        'End Using
        Form4.ShowDialog(Me)

        Me.Controls.Remove(pnl)
      End Using
    End Using
解決み!
違反を報告
引用返信

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






Mode/  Pass/


- Child Tree -