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

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

記事リスト ( )内の数字はレス数
UpDateoledbで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) | NomalLabelで文字単位の背景色(7) | NomalLableのカラー色を文字変数から変更したい(5) | NomalUrlにアクセスするとダウンロードされるファイルを捕まえる(2) | Nomalタブレット等でスワイプによるスクロールを実装(2) | NomalTEXTBOXのプロパティを文字列に(7) | NomalPDFをフォーム上で表示させる方法につきまして(6) | NomalChart X軸上の描画を切り替えたい(0) | NomalRichTextBoxへのドラッグ&ドロップしたExcelファイルの扱い(3) | Nomal特定のPCだけ発生する「パディングは無効なので削除できません」のエラーの原因(6) | NomalASP.NET WebApi内でXmlReader.Create(url)がタイムアウトする(4) | NomalDatagridViewでファンクションキーを止めたい(5) | NomalDataGridViewの特定セルにボタンを配置する方法(5) |



■記事リスト / ▼下のスレッド
■35611 / 親記事)  ブラウザでコピーした透過PNGを貼り付けたい
□投稿者/ よっし〜 一般人(1回)-(2024/06/07(Fri) 12:18:00)
  • アイコン環境/言語:[VB.NET2013 Win7] 
    分類:[.NET] 

    お疲れ様です。
    現在ブラウザ上に表示されている画像をフォームのPictureBoxに表示するソフトを作成しております。
    ブラウザに表示されている画像で「画像をコピー」しクリップボード経由で「Dim Img As Image = My.Computer.Clipboard.GetImage()」
    すると背景が真っ黒になります。
    画像が透過PNGの為だと思っておりますが、この画像の背景を白にしてPictureBoxに表示する方法はありませんでしょうか?

    If My.Computer.Clipboard.ContainsImage() Then
    Dim Img As Image = My.Computer.Clipboard.GetImage()
    PictureBox1.Image = Img
    End If

    ちなみに透過PNGブラウザで一旦保存し、そのPNGファイルを加工する方法も行いましたが、クリップボードに送られた段階
    で背景が黒く塗られている様で、うまく行きません。

    Using pngImage As Image = Image.FromFile(pngFilePath)
    Using bmp As New Bitmap(pngImage.Width, pngImage.Height)
    Using g As Graphics = Graphics.FromImage(bmp)
    g.Clear(Color.White)
    g.DrawImage(pngImage, 0, 0, pngImage.Width, pngImage.Height)
    End Using
    bmp.Save(OutputFile, ImageFormat.Png)
    End Using
    End Using

    以上、宜しくお願いいたします。
違反を報告
引用返信

▽[全レス4件(ResNo.1-4 表示)]
■35612 / ResNo.1)  Re[1]: ブラウザでコピーした透過PNGを貼り付けたい
□投稿者/ 魔界の仮面弁士 大御所(1573回)-(2024/06/07(Fri) 14:13:32)
  • アイコンNo35611に返信(よっし〜さんの記事)
    >「Dim Img As Image = My.Computer.Clipboard.GetImage()」
    > すると背景が真っ黒になります。

    CF_BITMAP が取得されたためでしょう。
    取得フォーマットの問題ですね。


    たとえば、下記を Edge からコピーしてみた場合、
    クリップボードには 6 種類のデータが保持されました。
    https://ascii.jp/img/2021/04/11/3186022/l/33f2a9acb9788a6d.png

    CF_PNG ("PNG") ⇒ 透過のPNG画像(460x460)
    CF_DIBV5 (17) ⇒ 黒背景のデバイス非依存ビットマップ(460x460)
    CF_HTML ("HTML Format") ⇒ img タグ入りのHTML(終端nullあり、CRLF改行)
    ("Chromium internal source URL") ⇒ URL文字列(終端nullあり、改行なし)
    CF_BITMAP (2) ⇒ ビットマップハンドル (HBITMAP)
    CF_DIB (8) ⇒ 黒背景のデバイス非依存ビットマップ(460x460)

    ということで修正案。

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
      Dim c = Clipboard.GetDataObject()
      Dim img As Image = Nothing
      If c.GetDataPresent("PNG", False) Then
        Dim o = TryCast(c.GetData("PNG"), System.IO.MemoryStream)
        If o IsNot Nothing Then
          img = Image.FromStream(o)
        End If
      ElseIf c.GetDataPresent(GetType(Image)) Then
        img = DirectCast(c.GetData(GetType(Image)), Image)
      End If
      PictureBox1.Image = img
    End Sub
違反を報告
引用返信
■35613 / ResNo.2)  Re[2]: ブラウザでコピーした透過PNGを貼り付けたい
□投稿者/ よっし〜 一般人(3回)-(2024/06/07(Fri) 15:14:46)
  • アイコン魔界の仮面弁士さん、早速のご教示、有り難うございます。

    一応お教え頂いたソースを新しいプロジェクトにして作成し、
    https://ascii.jp/img/2021/04/11/3186022/l/33f2a9acb9788a6d.png
    をブラウザでコピーし、Buttonを押してみたのですが、
    PictureBox1.Image = img
    で「img」はNohingでした。(画像が取れていない様です)

    で、少し気になったのですが、ブラウザによって動作(内容)は変わるものでしょうか?
    例として同じ「33f2a9acb9788a6d.png」をブラウザ上でコピーしワードパッドに貼って見ました。
    FireFox:背景は白(透過)でペーストされました
    Crome:背景は黒でペーストされました

    お教え頂いたソースでは・・・
    Crome:画像が表示されました
    FireFox:PictureBox1.Image = imgのimgがnothingになりました。

    同じコピーでも形式が変わるって事なのでしょうか??

    以上、宜しくお願いいたします。


違反を報告
引用返信
■35614 / ResNo.3)  Re[3]: ブラウザでコピーした透過PNGを貼り付けたい
□投稿者/ 魔界の仮面弁士 大御所(1574回)-(2024/06/07(Fri) 16:11:01)
  • アイコンNo35613に返信(よっし〜さんの記事)
    > 同じコピーでも形式が変わるって事なのでしょうか??
    クリップボードにデータを送信する処理というのは、
    それぞれのアプリケーションの実装依存になっていますので、
    ブラウザーがによって異なる形式になることは十分にありえます。


    > 例として同じ「33f2a9acb9788a6d.png」をブラウザ上でコピーしワードパッドに貼って見ました。
    これも同様。
    クリップボードには、複数のデータ形式が同時に保持されることが多いですが
    その場合、どの形式を採用するかは、添付先のアプリケーション依存です。
    Excel でも、"形式を選択して貼り付け" というモードがありますよね?

    複数のフォーマットをサポートしているアプリの場合、
    (1) 列挙されたフォーマットのうち、最初の形式を採用
    (2) サポートしている形式に優先度をつけ、優先順位の高いフォーマットを優先
    などの違いが生じることがあります。

    たとえば先の私のサンプルは (2) の実装であり、
    "PNG" 優先、無ければ Image を採用…という処理になっているわけです。


    > https://ascii.jp/img/2021/04/11/3186022/l/33f2a9acb9788a6d.png
    > FireFox:PictureBox1.Image = imgのimgがnothingになりました。
    個人的には、Firefox は苦手なんですよね…。
    Child-Tree 系の掲示板に繋ぐと、全角投稿者名などの cookie が腐ることがあったりするので。
    サイト側の問題だといえばそれまでなんですが。


    それはさておき、相手が Firefox や Internet Explorer ならば
     Dim s = Clipboard.GetFileDropList()
     If s.Count > 0 Then
      PictureBox1.LoadAsync(s(0))
      Return
     End If
    で行けるんじゃないですかね?

    試しに FireFox を再インストールして確認してみたところ、
    Internet Explorer および Firefox の場合は、
    下記の 14 種類の形式がクリップボードに含まれていました。


    【Internet Explorer 11 (Win10 22H2) で画像をコピーした場合】
     #01 "DataObject"
     #02 CFSTR_UNTRUSTEDDRAGDROP (50519)
     #03 "msSourceUrl"
     #04 CF_HDROP (15)
     #05 CFSTR_INETURLW (49483)
     #06 CF_DIB ★黒背景画像
     #07 "HTML Format"
     #08 CF_UNICODETEXT (13)
     #09 CF_TEXT (1)
     #10 "Ole Private Data"
     #11 CF_LOCALE (16)
     #12 CF_OEMTEXT (7)
     #13 CF_BITMAP (2) ★黒背景画像
     #14 CF_DIBV5 (17) ★黒背景画像


    【Firefox (ver 126.0.1 64bit) で画像をコピーした場合】
     #01 "DataObject"
     #02 "text/html"
     #03 "HTML Format"
     #04 "text/_moz_htmlinfo"
     #05 "text/_moz_htmlcontext"
     #06 "application/x-moz-file-promise-url"
     #07 "application/x-moz-file-promise-dest-filename"
     #08 CF_HDROP (15)
     #09 CFSTR_PREFERREDDROPEFFECT (49472)
     #10 "application/x-moz-nativeimage" ※取得できない
     #11 CF_DIBV5 (17) ★黒背景画像
     #12 CF_DIB (8) ★黒背景画像
     #13 "Ole Private Data"
     #14 CF_BITMAP (2) ★黒背景画像


    ※"application/x-moz-nativeimage" の場合に HGLOBAL が NULL となるのはバグらしい?
    https://bugzilla.mozilla.org/show_bug.cgi?id=255686
違反を報告
引用返信
■35615 / ResNo.4)  Re[4]: ブラウザでコピーした透過PNGを貼り付けたい
□投稿者/ よっし〜 一般人(4回)-(2024/06/07(Fri) 17:36:16)
  • アイコン魔界の仮面弁士さん、早速のご教示有り難うございます。

    > それはさておき、相手が Firefox や Internet Explorer ならば
    >  Dim s = Clipboard.GetFileDropList()
    >  If s.Count > 0 Then
    >   PictureBox1.LoadAsync(s(0))
    >   Return
    >  End If
    > で行けるんじゃないですかね?

    本当ですね。普通に表示出来ました。
    ただFireFoxはいけましたが、CromeやEdgeも対象としたいので、先にご教示頂きました
     Dim c = Clipboard.GetDataObject()
      Dim img As Image = Nothing
      If c.GetDataPresent("PNG", False) Then
        Dim o = TryCast(c.GetData("PNG"), System.IO.MemoryStream)
        If o IsNot Nothing Then
          img = Image.FromStream(o)
        End If
      ElseIf c.GetDataPresent(GetType(Image)) Then
        img = DirectCast(c.GetData(GetType(Image)), Image)
      End If
      PictureBox1.Image = img
    との合わせ技で解決出来そうです。
    長い間悩んでおりました。どうも有り難うございました。


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

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



■記事リスト / ▼下のスレッド / ▲上のスレッド
■35608 / 親記事)  foreachでループ回数を取得
□投稿者/ Wan 付き人(97回)-(2024/06/06(Thu) 15:16:44)
  • アイコン環境/言語:[.Net6 C# Windows] 
    分類:[.NET] 

    AngleSharpを使っています。

    foreachでループ回数を取得するためにLinqのSelect句を使用してIndexを使用しています。

    foreach ( var LopItem in doc.QuerySelectorAll(".news_list>li").Select((Value, Index) => new { Value, Index }))
    {

     ここでLopItemをメソッドに渡したい。その時に、メソッド側で引数となるLopItemの型を指定したい。



    上のコードでは、ループ変数の型をvarを使って推論させていますが、
    具体的に型を指定する場合どのような型となるのでしょうか?

    ローカル変数で見るとvar LopItmの方は
    +LopItem{ Value = {AngleSharp.Html.Dom.HtmlListItemElement}, Index = 0 } <Anonymous Type>
    と表示されます。

    型として<Anonymous Type>「匿名型?」と

    すると、LopItemの型はどのように指定すれば良いのでしょうか?
    詳しい方宜しくお願い致します。
違反を報告
引用返信

▽[全レス2件(ResNo.1-2 表示)]
■35609 / ResNo.1)  Re[1]: foreachでループ回数を取得
□投稿者/ 魔界の仮面弁士 大御所(1572回)-(2024/06/06(Thu) 17:03:14)
  • アイコン2024/06/06(Thu) 17:07:36 編集(投稿者)

    No35608に返信(Wanさんの記事)
    > 環境/言語:[.Net6 C# Windows] 
    .NET 6 は半年後にサポート期限が切れるので、
    .NET 8 への移行準備を進めておいた方が良いかと。


    > メソッド側で引数となるLopItemの型を指定したい。
    案1) メソッド引数を dynamic にして、匿名型をそのまま渡す
     foreach (var LopItem in doc.QuerySelectorAll(".news_list>li").Select((Value, Index) => new { Value, Index }))
     {
      Foo1(LopItem)
     }
     void Foo1(dynamic lopItem)
     {
     }


    案2) 匿名型の代わりに、record class や record struct などを使う
     foreach (var LopItem in doc.QuerySelectorAll(".news_list>li").Select((Value, Index) => new Example( Value, Index )))
     {
      Foo2(LopItem);
     }
     void Foo2(Example lopItem)
     {
     }
     record struct Example(AngleSharp.Dom.IElement Value, int Index);


    案3) 匿名型を止めて、タプルで渡す
     foreach (var LopItem in doc.QuerySelectorAll(".news_list>li").Select((Value, Index) => ( Value, Index )))
     {
      Foo3(LopItem);
     }
     void Foo3((AngleSharp.Dom.IElement Value, int Index) lopItem)
     {
     }


    案4) Value と Index を別引数にして渡す
     foreach (var (value, index) in doc.QuerySelectorAll(".news_list>li").Select((Value, Index) => (Value, Index)))
     {
      Foo4(value, index);
     }
     void Foo4(AngleSharp.Dom.IElement value, int index)
     {
     }
違反を報告
引用返信
■35610 / ResNo.2)  Re[2]: foreachでループ回数を取得
□投稿者/ Wan 付き人(98回)-(2024/06/07(Fri) 08:20:56)
  • アイコン魔界の仮面弁士様
    いつもありがとうございます

    dynamic型ってこのような使い方ができるのですね?
    今まで、他言語との連系などやることは無いと思い全く勉強していませんでした。
    この機会にかじってみようと思います。

    2案のrecord class や record struct についても全く想像も出来ませんでした。

    教えて頂いたことを、熟読してスキルアップにつなげたいと思います。
    ありがとうございました。
解決み!
違反を報告
引用返信

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



■記事リスト / ▼下のスレッド / ▲上のスレッド
■35604 / 親記事)  bitmapが保存できない
□投稿者/ K-1 一般人(1回)-(2024/05/03(Fri) 22:12:10)
  • アイコン環境/言語:[C#] 
    分類:[.NET] 

    画像ファイルに対し加工を行うコードを作っています。
    画像ファイルを読み込み、バイト配列に変換して、バイト配列に対して加工を行い、画像ファイルとして保存するために以下のようなコードを書きました。

    // 画像読み込み
    Bitmap bitmap = new Bitmap(@"D:\temp\moto.bmp");

    /// Bitmapをバイト配列にする
    MemoryStream mms = new MemoryStream();
    bitmap.Save(mms, ImageFormat.Bmp);
    byte[] inputdata = mms.ToArray();
    mms.Close();
    mms.Dispose();

    MemoryStream ms = new MemoryStream(inputdata);
    Bitmap output_bitmap = new Bitmap(ms);
    ms.Close();
    ms.Dispose();

    output_bitmap.Save(@"D:\temp\ato.bmp", ImageFormat.Bmp);

    変数inputdataにはBITMAPフォーマットそのままのバイナリが展開されているとこまで確認したので、BITMAP-BYTE変換は問題ないと思います。
    問題は最後の
    output_bitmap.Save(@"D:\temp\ato.bmp", ImageFormat.Bmp);

    System.Runtime.InteropServices.ExternalException: 'GDI+ で汎用エラーが発生しました。'
    というエラーが出てしまいます。
    "D:\temp\ato.bmp"には54バイトのファイルが生成されており、powershellで「format-hex .\a.bmp」とダンプをとってみると変数inputdataの先頭54バイトと同じものがはいってるぽいです。

    この「'GDI+ で汎用エラーが発生しました。'」の対処法はないでしょうか。
違反を報告
引用返信

▽[全レス2件(ResNo.1-2 表示)]
■35605 / ResNo.1)  Re[1]: bitmapが保存できない
□投稿者/ KOZ 一般人(36回)-(2024/05/04(Sat) 01:13:53)
  • アイコン2024/05/04(Sat) 01:18:08 編集(投稿者)

    No35604に返信(K-1さんの記事)
    > System.Runtime.InteropServices.ExternalException: 'GDI+ で汎用エラーが発生しました。'
    > というエラーが出てしまいます。

    Bitmap を作成するときに使った Stream オブジェクトは破棄しないでください。

    Bitmap output_bitmap = new Bitmap(ms);
    output_bitmap.Save(@"D:\temp\ato.bmp", ImageFormat.Bmp);
    ms.Dispose();

    この順番であればOKです。

    あと、Stream に関しては Close = Dispose ですので、どちらか一方を実行するだけで良いです。

    Stream の実装
    https://referencesource.microsoft.com/#mscorlib/system/io/stream.cs,dc4ffe046b847b84
違反を報告
引用返信
■35606 / ResNo.2)  Re[2]: bitmapが保存できない
□投稿者/ K-1 一般人(2回)-(2024/05/04(Sat) 08:58:28)
  • アイコンNo35605に返信(KOZさんの記事)
    > 2024/05/04(Sat) 01:18:08 編集(投稿者)

    うまくいきました!
    想定通りの画像が保存されていることも確認しました。
    ありがとうございます。
解決み!
違反を報告
引用返信

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



■記事リスト / ▼下のスレッド / ▲上のスレッド
■35599 / 親記事)  特定ピクセルで画像を読み込みたい
□投稿者/ 午前の紅茶 一般人(1回)-(2024/05/01(Wed) 18:05:57)
  • アイコン環境/言語:[c#] 
    分類:[.NET] 

    Bitmap bitmap = new Bitmap(filename);
    と画像を読み込む処理があるのですが、読み込む画像はJPEGやPNG、BMPなどでピクセル深度もバラバラです。
    以後の処理のこともあるので、読み込まれたbitmapは24ビットなどに統一したいのですが、「24ビットで読み込む」ということはできないでしょうか。

    Bitmap bitmap = new Bitmap(filename);
    Bitmap bitmap24 = new Bitmap(bitmap.Width, bitmap.Height, PixelFormat.Format24bppRgb);

    こんな感じで24ビットのビットマップを作って読み込んだbitmapから貼り付けるというのも考えましたが、もうちょいスマートな方法はないでしょうか。

違反を報告
引用返信

▽[全レス2件(ResNo.1-2 表示)]
■35602 / ResNo.1)  Re[1]: 特定ピクセルで画像を読み込みたい
□投稿者/ Hongliang 大御所(651回)-(2024/05/02(Thu) 11:15:27)
  • アイコン標準ライブラリを使う限りは、特にほかの手段はなさそうですね。
    System.Windows.Media.Imagingの方だとFormatConvertedBitmapで変換部分は手軽に書けるようになってますが、結局一旦ロードしてから変換というのは変わりません。
違反を報告
引用返信
■35603 / ResNo.2)  Re[2]: 特定ピクセルで画像を読み込みたい
□投稿者/ 午前の紅茶 一般人(2回)-(2024/05/03(Fri) 10:50:25)
  • アイコンうーん、ないですか。
    仕方ないですね。
    ありがとうございます。
解決み!
違反を報告
引用返信

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



■記事リスト / ▲上のスレッド
■35596 / 親記事)  DataGridViewでAlt+Enterで改行したい
□投稿者/ aks 一般人(1回)-(2024/04/08(Mon) 20:13:16)
  • アイコン環境/言語:[.NET Framework4.8 C# Windows10 VS2022 ] 
    分類:[.NET] 

    お世話になります。
    
    DataGridViewで、エクセルのようにセルをAlt+Enterで改行させる事は可能でしょうか?
    Shift+Enterで改行しないように実装はできましたが、先に進めず困っておりましてご教授願います。
    よろしくお願いいたします。
    
    
    //DataGridViewの派生クラスを作成
    //デザイナーでtextboxの列を1つ追加済み。
    public class DataGridView_Kai : DataGridView
    {
        protected override bool ProcessCmdKey(ref Message msg, Keys KeysVal)
        {
            //Shift+Enterの同時押しを無効化
            if ((KeysVal & Keys.KeyCode) == Keys.Enter && (KeysVal & Keys.Modifiers) == Keys.Shift)
            {
                return true;
            }
    
            //Alt+Enterの同時押下時に改行。。。
            if ((KeysVal & Keys.KeyCode) == Keys.Enter && (KeysVal & Keys.Modifiers) == Keys.Alt)
            {
                  //テストでKeysValを0にしても、下のセルへ移動しますので、実装場所が違うのではないかと考えております。
    
            }
    
            return base.ProcessCmdKey(ref msg, KeysVal);
        }
    }
    
    public partial class Form1 : Form
    {
    
        public Form1()
        {
            InitializeComponent();
        }
    
        private void Form1_Load(object sender, EventArgs e)
        {
            dataGridView_Kai1.DefaultCellStyle.WrapMode  = DataGridViewTriState.True;
    
            dataGridView_Kai1.RowCount = 10;
        }
    }
    

違反を報告
引用返信

▽[全レス2件(ResNo.1-2 表示)]
■35597 / ResNo.1)  Re[1]: DataGridViewでAlt+Enterで改行したい
□投稿者/ KOZ 一般人(35回)-(2024/04/09(Tue) 00:38:33)
  • アイコン
    2024/04/10(Wed) 05:38:01 編集(投稿者)
    
    ■No35596に返信(aksさんの記事)
    > DataGridViewで、エクセルのようにセルをAlt+Enterで改行させる事は可能でしょうか?
    
    こんな感じでしょうか?
    
    public class DataGridView_Kai : DataGridView
    {
        protected override bool ProcessCmdKey(ref Message msg, Keys KeysVal) {
            if (IsCurrentCellInEditMode) {
                TextBox textBox = EditingControl as TextBox;
                if (textBox != null && textBox.Multiline) {
                    switch (KeysVal) {
                        case Keys.Enter | Keys.Shift:
                            return true;
                        case Keys.Enter | Keys.Alt:
                            string newLine = Environment.NewLine;
                            if (textBox.MaxLength == 0 ||
                                textBox.TextLength - textBox.SelectionLength + newLine.Length <= textBox.MaxLength) {
                                textBox.SelectedText = newLine;
                            }
                            return true;
                    }
                }
            }
            return base.ProcessCmdKey(ref msg, KeysVal);
        }
    }
    

違反を報告
引用返信
■35598 / ResNo.2)  Re[2]: DataGridViewでAlt+Enterで改行したい
□投稿者/ aks 一般人(2回)-(2024/04/13(Sat) 14:17:57)
  • アイコンKOZ様

    ご回答いただきありがとうございます。
    教えていただいた内容で試したところ解決しております。

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

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






Mode/  Pass/


- Child Tree -