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

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

記事リスト ( )内の数字はレス数
Nomalフォントに登録されていない文字の検出(1) | Nomaloledbでdatatableを取得するときにエラーになる(1) | Nomal作成した白黒画像をWordに貼り付けてから「図として保存」(8) | NomalVB.NetでVB6.0と同じFontを指定しても同様に印刷されない(9) | 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) | Nomal画面遷移(モーダルとモードレス)(2) | NomalProcessクラスからbatファイル実行後、KILLできない(2) | NomalGetDirectoriesでルートを指定するとエラーになる(3) | Nomal兆億万表記の文字列を数値に変換できる?(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でExcelファイル操作(7) | NomalVB.NETからcmdでpingを実行した時の結果(5) | Nomalvb.netでのExcelファイルそうさ(2) | Nomalキーボード+バーコードでキーボード入力を無効にしたい(6) | NomalVB2022でクリスタルレポートが開けない(2) | Nomalファイルとして配置したマニフェストを優先したい(2) | NomalTabPageの背景色(5) | NomalC#でJpeg圧縮のTiffファイルを作成したい(4) | Nomalエクセルのみ監視ができない(2) | NomalDataGridViewのVirtualModeを有効した場合の実装方法(4) | NomalExcelの数値 -> 日付みたいな関数?(2) | Nomaljumbo icon(256x256)が存在するか知る方法(6) | NomalDrawstringでの透過文字作成(3) | 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) | Nomal時間変数(文字列)の扱い(4) | NomalVB.net からAccessDBへの接続(2) | Nomal画像のスクロール(6) | Nomalタイマーの一括処理(6) | NomalTreeViewとDataGridViewのスクロールを同期(シンクロ)させたい(4) | NomalTreeViewの現在位置とDataGridViewの現在位置を合わせたい(7) | NomalPictureBoxの画像を連続保存(11) | NomalDataGridViewの特定セルにボタンを配置する方法(5) | Nomalフォームのリサイズ時にDataGridViewが再描画されない(4) | NomalテキストボックスのValidatingイベントよりも先に発生するボタン発生イベントは何でしょう?(2) | NomalPDFをフォーム上で表示させる方法につきまして(4) | NomalDataGridViewの行ヘッダーに行番号を表示した時のエラー(4) | Nomal継承元フォームで各フォームのボタン動作を検知したい(3) | Nomalラジオボタンの一括設定(7) | NomalWindowsエクスプローラからのドラッグ&ドロップ(2) | NomalRichTextBoxのテキストをpictureBOXへ(12) | Nomalクリックイベントでexeを作成できるか(2) | Nomalアセンブリ情報が載らない(1) | Nomal先頭に空白(スペース)があるファイルを読み込んでRichTextBoxへ書き出すとスペースが削除える(6) | Nomalc#で日付型の定義の仕方で質問があります。(2) | NomalExcel Com オブジェクトの増殖(13) | Nomal二次元マップから値の取得(1) | NomalアプリでHDMIへ出す解像度を変えたい(4) | Nomal列車の時間ごとの位置情報を表示したいです。(2) | Nomal画像の中心を基点に回転(4) | NomalDataGridViewのドロップダウンリストの表示と選択後の値を分けたい(1) | NomalタッチキーボードでIMEを自動で切替えたい(6) | NomalVSTOによるエクセルアドインのインストーラーでのアップデート(1) | NomalMP4動画を再生する方法について(5) | NomalUrlにアクセスするとダウンロードされるファイルを捕まえる(2) | NomalLableのカラー色を文字変数から変更したい(5) | NomalLabelで文字単位の背景色(7) | NomalTEXTBOXのプロパティを文字列に(7) | Nomalタブレット等でスワイプによるスクロールを実装(2) | NomalPDFをフォーム上で表示させる方法につきまして(6) | NomalChart X軸上の描画を切り替えたい(0) | NomalRichTextBoxへのドラッグ&ドロップしたExcelファイルの扱い(3) | Nomal特定のPCだけ発生する「パディングは無効なので削除できません」のエラーの原因(6) |



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



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



■記事リスト / ▼下のスレッド / ▲上のスレッド
■35177 / 親記事)  Labelで文字単位の背景色
□投稿者/ ま〜 一般人(9回)-(2022/10/19(Wed) 13:09:57)
  • アイコン環境/言語:[basic] 
    分類:[.NET] 

    こんいちは
    Labelで文字単位の反転文字をしたいのですが(特定の文字だけ協調したい)
    こんな事はRichTextで無いと無理なのでしょうか?

違反を報告
引用返信

▽[全レス7件(ResNo.3-7 表示)]
■35181 / ResNo.3)  Re[2]: Labelで文字単位の背景色
□投稿者/ 魔界の仮面弁士 大御所(1463回)-(2022/10/19(Wed) 17:10:24)
  • アイコンNo35180に追記(魔界の仮面弁士の記事)
    > TextBox や RichTextBox で代用するとかですかね。
    > ただしこの場合、キーボードやマウス操作で選択状態を変更できてしまいます。
    > かといって Enabled = False だと、淡色表示になってしまうが悩ましい所。

    Enabled は True のままにしておいて、
    Enter イベントか GotFocus イベントで、
    非アクティブにしてしまえば、何とかなるかな?

    Private Sub TextBox1_GotFocus(sender As Object, e As EventArgs) Handles TextBox1.GotFocus
      ActiveControl = Nothing
    End Sub


    本当は、そもそもフォーカスを受け取らないようにするか、
    あるいはせめて、前回フォーカスのあったコントロールに戻す方が
    望ましいのですけれど…ひとまず手抜き実装ということで。
違反を報告
引用返信
■35182 / ResNo.4)  Re[3]: Labelで文字単位の背景色
□投稿者/ KOZ 一般人(4回)-(2022/10/20(Thu) 05:37:05)
  • アイコン
    No35181に返信(魔界の仮面弁士さんの記事)
    > 本当は、そもそもフォーカスを受け取らないようにするか、
    > あるいはせめて、前回フォーカスのあったコントロールに戻す方が
    > 望ましいのですけれど…ひとまず手抜き実装ということで。
    
    RichTextBox を非表示にして親に描画するとか。
    
    Public Class Form1
    
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            RichTextBox1.Visible = False
            RichTextBox1.Text = "こんにちは!"
            RichTextBox1.SelectionStart = 5
            RichTextBox1.SelectionLength = 1
            RichTextBox1.SelectionColor = Color.White
            RichTextBox1.SelectionBackColor = Color.Red
        End Sub
    
        Private Sub Form1_Paint(sender As Object, e As PaintEventArgs) Handles MyBase.Paint
            Using bmp As New Bitmap(RichTextBox1.Width, RichTextBox1.Height)
                RichTextBox1.DrawToBitmap(bmp, New Rectangle(New Point(0, 0), RichTextBox1.Size))
                e.Graphics.DrawImage(bmp, RichTextBox1.Location)
            End Using
        End Sub
    
    End Class
    

違反を報告
引用返信
■35183 / ResNo.5)  Re[4]: Labelで文字単位の背景色
□投稿者/ KOZ 一般人(5回)-(2022/10/20(Thu) 11:42:04)
  • アイコンNo35182に返信(KOZの記事)
    > RichTextBox を非表示にして親に描画するとか。

    https://referencesource.microsoft.com/#System.Windows.Forms/winforms/Managed/System/WinForms/RichTextBox.cs,1804

    RichTextBox の DrawToBitmap は機能しなかったのを思い出しました。
    このコードは .NET Framework 4.7 以上だと動きますが 4.6.2 以下だと動きません。
    ま〜さんがお使いの環境によっては、この手は使えません。失礼しました。

違反を報告
引用返信
■35184 / ResNo.6)  Re[5]: Labelで文字単位の背景色
□投稿者/ KOZ 一般人(6回)-(2022/10/21(Fri) 08:15:12)
  • アイコンNo35183に返信(KOZさんの記事)
    > このコードは .NET Framework 4.7 以上だと動きますが 4.6.2 以下だと動きません。
    > ま〜さんがお使いの環境によっては、この手は使えません。失礼しました。

    .NET Framework 4.0 以降であれば、app.config をいじれば大丈夫のようです。

    https://lets-csharp.com/richtextbox-image/

違反を報告
引用返信
■35186 / ResNo.7)  Re[6]: Labelで文字単位の背景色
□投稿者/ ま〜 一般人(10回)-(2022/10/21(Fri) 14:04:58)
  • アイコン魔界さんKOZさんありがとうございます
    センター配置でFontサイズが変動するのでBOXだと入れ物が決まってしないつかいづらかっらので
    Labelだと枠がないのでLabelでなんとかならないかと思っていました
    教えて頂いた内容で解決しました。
    いつもありがとうございます

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

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



■記事リスト / ▼下のスレッド / ▲上のスレッド
■35159 / 親記事)  TEXTBOXのプロパティを文字列に
□投稿者/ ま〜 一般人(1回)-(2022/10/07(Fri) 16:49:59)
  • アイコン環境/言語:[Vb.NET] 
    分類:[.NET] 

    はじめまして初心者です
    初歩的な質問で申し訳ないのですが
    TEXTBOXのプロパティを文字列に
    TextBox.Font などを文字変数にしたい。どのFontが使われているのか知りたい
    宜しくお願いします
    Vs2022 basic です


違反を報告
引用返信

▽[全レス7件(ResNo.3-7 表示)]
■35162 / ResNo.3)  Re[2]: TEXTBOXのプロパティを文字列に
□投稿者/ まー 一般人(1回)-(2022/10/11(Tue) 12:53:43)
  • アイコン親切丁寧にご指導ありがとうございます。
    感謝です。一歩前に進みました

    > 何のために Font の値を知りたいのでしょうか?
    > その目的によっては、話が変わってくるかもしれません。

    ご推察の様に
    アプリ上で変更したTextBoxの最終的なフォントをファイルに保存しておいて
    次にアプリを開いた時に同じフォントで開くのが目的です
    ほんと助かります


    >>初歩的な質問で申し訳ないのですが
    > 分からないことにたいして、それが技術的に初歩的な事柄であるのかどうかを、
    > どうやって判断しているのかが、微妙に気になってみたり…。
    > (「初歩的な質問かも知れませんが」という表現なら分からなくも無いのですが)

    私は親父世代でしてVB6までは結構ソフト開発しておりました
    第一線から退いたのですが務めていた会社が倒産して再就職先で.NETを勉強しています
    こんな事をしたいとか発想はでるのですが.NETは具体化が難しいので苦しんでます
    実は教えて頂いたサンプルコードも理解出来ない所が多い状態です

    ですのでホント感謝です。
違反を報告
引用返信
■35163 / ResNo.4)  Re[2]: TEXTBOXのプロパティを文字列に
□投稿者/ ま〜 一般人(2回)-(2022/10/11(Tue) 16:59:51)
  • アイコン 関連する内容で追加の質問をさせて頂きたいのですがお手数ですが宜しくお願いします。
    参考にしてFont以外の復元(色とか)もトライして見たのですが上手くいきません
    Labelには文字列として値は入っています。

    'この宣言を理解してない所があります。(Label13は適当に書いてみました。これが要因?)
    Dim pdFont = TypeDescriptor.GetProperties(Label13).Find("Font", False)
    Dim pdBackColor = TypeDescriptor.GetProperties(Label13).Find("BackColor", False)
    Dim pdForeColor = TypeDescriptor.GetProperties(Label13).Find("ForeColor", False)

    '各設定を文字列として保存
    Label13.Text = pdFont.Converter.ConvertToInvariantString(TextBox1.Font)
    Label14.Text = pdBackColor.Converter.ConvertToInvariantString(TextBox1.BackColor)
    Label15.Text = pdForeColor.Converter.ConvertToInvariantString(TextBox1.ForeColor)

    '文字列として保存された Fontなどの値を、実際の オブジェクトに復元したい
    TextBox2.Font = DirectCast(pdFont.Converter.ConvertFromInvariantString(Label13.Text), Font)

    ’   ↑ここまでは上手く行ってます。問題はFont以外です↓(文法が間違っているみたいです)

    TextBox2.BackColor = DirectCast(pdBackColor.Converter.ConvertFromInvariantString(Label14.Text), BackColor)
    TextBox2.ForeColor = DirectCast(pdForeColor.Converter.ConvertFromInvariantString(Label15.Text), ForeColor)

    宜しくお願いします
違反を報告
引用返信
■35164 / ResNo.5)  Re[3]: TEXTBOXのプロパティを文字列に
□投稿者/ 魔界の仮面弁士 大御所(1453回)-(2022/10/11(Tue) 19:04:19)
  • アイコンNo35163に返信(ま〜さんの記事)
    > TextBox2.BackColor = DirectCast(pdBackColor.Converter.ConvertFromInvariantString(Label14.Text), BackColor)
    > TextBox2.ForeColor = DirectCast(pdForeColor.Converter.ConvertFromInvariantString(Label15.Text), ForeColor)
    DirectCast の第二引数には「データ型」を指定します。

    BackColor プロパティは「System.Drawing.Color 型」で
    ForeColor プロパティも「System.Drawing.Color 型」で
    Font プロパティは「System.Drawing.Font 型」で
    Text プロパティは「System.String 型」で
    Enabled プロパティは「System.Boolean 型」ですよね。

    すなわち、
     TextBox1.BackColor = DirectCast(〜, Color)
     TextBox1.ForeColor = DirectCast(〜, Color)
     TextBox1.Font = DirectCast(〜, Font)
     TextBox1.Text = DirectCast(〜, String)
     TextBox1.Enabled = DirectCast(〜, Boolean)
    のように記述することになります。



    > (Label13は適当に書いてみました。これが要因?)
    Label 用の PropertyDescriptor を TextBox 用に対して用いてはいけません。

    PropertyDescriptor にとって重要なのは「どの型のプロパティを扱おうとしているのか」なので、
    コントロールの型を一致させてないと実行時エラーになりえます。


    たとえば
     Dim a = TypeDescriptor.GetProperties(Label1).Find("AutoEllipsis", False)
     Dim b = TypeDescriptor.GetProperties(TextBox1).Find("CharacterCasing", False)
    とした場合、
     MsgBox( a.GetValue(Label1) )
     MsgBox( b.GetValue(TextBox1) )
    とは書けますが、
     MsgBox( a.GetValue(TextBox1) )
     MsgBox( b.GetValue(Label1) )
    にしてしまうと、呼び出し時に例外がスローされます。
    これは ShouldSerializeValue などでも同じことです。


    PropertyDescriptor は:

    Dim pd As PropertyDescriptor = TypeDescriptor.GetProperties(Label1).Find("Font", False)
    のように「コントロールのインスタンス」を通じて取得する方法のほか、

    Dim pd As PropertyDescriptor = TypeDescriptor.GetProperties(GetType(Label)).Find("Font", False)
    のように「コントロールの型」を通じて取得する方法もあります。
違反を報告
引用返信
■35166 / ResNo.6)  Re[4]: TEXTBOXのプロパティを文字列に
□投稿者/ まー 一般人(2回)-(2022/10/13(Thu) 11:10:58)
  • アイコン魔界さんありがとうございます
    やっと出来ました。
    色々と推察して頂いて書いて頂けのが凄く有難かったです。
    ホントにありがとうございました。

    最後に変な質問をさせて頂きたいのですが
    もっと理解を深めたく思うのですがMSDNを見ても難しく感じてます
    たとえば教えて頂いたTypeDescriptor.GetPropertiesとか大体は理解できたのですが
    何もなければこう書くも推測すら出来ません。

    魔界さんはどの様な感じでこの辺りの理解を深められたのでしょうか?
    参考にされたWebなどあましたら教えて頂けたらと思います。親父教育で申し訳ないです。


違反を報告
引用返信
■35171 / ResNo.7)  Re[2]: TEXTBOXのプロパティを文字列に
□投稿者/ ま〜 一般人(5回)-(2022/10/18(Tue) 17:17:35)
  • アイコン解決しました。↑
解決み!
違反を報告
引用返信

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



■記事リスト / ▲上のスレッド
■35165 / 親記事)  タブレット等でスワイプによるスクロールを実装
□投稿者/ 炎の妖精さん 一般人(7回)-(2022/10/13(Thu) 10:06:36)
  • アイコン環境/言語:[Windows10(64bit)_VB.NET] 
    分類:[.NET] 

    お世話になっております。

    表題の通り、スワイプでのスクロールを実装したいと考えております。
    Windowsフォーム上に以下のコントロールを配置しました。

    ■FlowLayoutPanel(スクロールを表示してここでスクロールしたい)
    └■UserControl(5*10のボタンが並べられている)
     ├■Button01
     ├■Button02
     …
     ├■Button49
     └■Button50


    なぜこのような配置の仕方をしている理由ですが、
    タブレットの解像度が1920*1280、ボタンや文字もなるべく大きめということもあり、
    5*10のボタンを配置する場合にはタブレットの画面に入りきらない為、スクロールを実装することになりました。

    DataGridViewでは自動でスワイプによるスクロールが出来るのですが、
    上記のような配置の場合ではスクロールが出来ませんでした。
    ※もちろんマウスホイールによるスクロールは可能でした

    処理としてはUserControlのスクロール移動量を取得して
    FlowLayoutPanelにスクロール移動量を付加させるというような処理になるのでしょうか?

    スクロールに関しての処理は初めての為、ご教授いただければ幸いです。
違反を報告
引用返信

▽[全レス2件(ResNo.1-2 表示)]
■35167 / ResNo.1)  Re[1]: タブレット等でスワイプによるスクロールを実装
□投稿者/ 魔界の仮面弁士 大御所(1454回)-(2022/10/13(Thu) 11:14:13)
  • アイコン2022/10/13(Thu) 11:18:44 編集(投稿者)

    Windows Touch あるいは スタイラス対応のタブレット デバイスが
    現在手元に無いため、動作を確認せずに回答しています。
    余裕があれば追って確認しますが…とりあえず状況把握として逆質問。


    No35165に返信(炎の妖精さんさんの記事)
    > 上記のような配置の場合ではスクロールが出来ませんでした。
    マウスホイールによる操作の場合、
    「ホバーしたときに非アクティブウィンドウをスクロールする」
    が On / Off の状態で動作が変わるかと思いますが、スワイプの場合、
    上記の設定切替に近い動作にしたいのでしょうか。それともスワイプは
    上記設定によらず、常に同じ動作になって欲しいのでしょうか。
    https://dynabook.com/assistpc/faq/pcdata2/017955.htm


    > Windowsフォーム上に以下のコントロールを配置しました。
    Button, UserControl, FlowLayoutPanel のそれぞれに対して
     ・AutoSize プロパティによって自動変更されるもの
     ・Dock や Anchor などによってリサイズされうるもの
     ・固定サイズで配置されるもの
    などがどうなっているのか定かでは無いので、
    当方で状況を読み切れていない部分があるかもしれませんが:


    今回、FlowLayoutPanel が採用されている理由は何ですか?
    FlowLayoutPanel 内にあるコントロールが UserControl 一つだけなら
    フローレイアウトになることも無さそうなので、素の Panel で良いような。

    (案1) デザイン時にスクロールできない
     Panel1 (AutoScroll = False)
     └UserControl1 (AutoScroll = True , Dock = Fill, Anchor = Top,Left)

    (案2) デザイン時にもスクロール可能だが、カプセル化しにくいかも?
     Panel1 (AutoScroll = True)
     └UserControl1 (AutoScroll = False, Dock = None, Anchor = Top,Left)


    FlowLayoutPanel 版は、Panel 版の 案2 に近い設計なのかと予想していますが、
    上記それぞれを試した時、
     a) マウス(あるいはタッチパッド)によるホイール回転操作
     b) マウスによるパン操作(ホイールを押しながらのドラッグ)あるいは同等のタッチパッド操作
     c) スタイラス(ペン)を画面に押し付けた状態でのスワイプ操作
     d) スタイラスのスクロールボタンを押した状態でのホバー操作
     e) Windows Touch によるスワイプ操作
    の動作に違いが生じるでしょうか。それとも 案1/案2 で変わらないでしょうか。

    a と d は非アクティブ状態でも操作できるのに対して、
    b, c, e はタップ(あるいはクリック)操作が先に入るので、
    常にアクティブウィンドウに対して操作することになるという違いがありそうです。


    ところで、今回のスワイプ操作はどの場所から始める想定でしょうか?
     ア) FlowLayoutPanel のスクロールバー部
     イ) FlowLayoutPanel の余白部(UserControl の外側)
     ウ) UserControl のクライアント領域
     エ) 各ボタンの上
     オ) 上記以外

    フォーカスを受け取れるコントロール、かつ、スクロール可能なコントロールの
    上でスワイプ操作を開始すると、スクロールが発生し無さそうなので
    念のために確認しています。
違反を報告
引用返信
■35168 / ResNo.2)  Re[1]: タブレット等でスワイプによるスクロールを実装
□投稿者/ 炎の妖精さん 一般人(8回)-(2022/10/13(Thu) 11:16:02)
  • アイコンすみません。解決しました。

    他社サイト様にて
    C#で書かれたコードをVB.NETに書き直し
    一部のコードを直したら想定通りの動作となりました。

    ■Windowsフォームアプリにおけるスワイプによるスクロールについて
     ※URLは長いので省略させていただきます。
解決み!
違反を報告
引用返信

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






Mode/  Pass/


- Child Tree -

2024/12/05(Thu) 03:56:11 に作成されたキャッシュを表示しています。
生のデータを表示する | キャッシュを最新にする