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

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

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



■記事リスト / ▼下のスレッド
■35633 / 親記事)  フォントに登録されていない文字の検出
□投稿者/ Iraquser 一般人(1回)-(2024/11/14(Thu) 10:28:51)
  • アイコン環境/言語:[Win10 C#] 
    分類:[.NET] 

    Graphic.DrawStringで文字列を描画するプログラムを開発していますが、描画しようとする文字列に含まれる文字がフォントに登録されていない場合、描画は行われないようです(全てのフォント・文字を確認した訳ではありません)。DrawString実行前に描画しようとする文字列内の全文字が描画可能か確認する手段はないのでしょうか。
違反を報告
引用返信

▽[全レス1件(ResNo.1-1 表示)]
■35634 / ResNo.1)  Re[1]: フォントに登録されていない文字の検出
□投稿者/ 魔界の仮面弁士 大御所(1577回)-(2024/11/14(Thu) 16:15:13)
  • アイコンNo35633に返信(Iraquserさんの記事)
    > Graphic.DrawStringで文字列を描画するプログラムを開発していますが
     Graphics.DrawString のことでしょうか。
    GDI+ の描画命令ですね。
    同じフォントでも、WPF と GDI と GDI+ とでは描画できる文字に差が出ます。
    GDI だと代替フォントが使われたりしますし、WFP だと異体字に対応していたりとか。
    http://bbs.wankuma.com/index.cgi?mode=al2&namber=95373&KLOG=165


    > 描画しようとする文字列内の全文字が描画可能か確認する手段はないのでしょうか。
    含まれているかどうかを調べるなら、
    GlyphTypeface.CharacterToGlyphMap.ContainsKey というものがあります。
    https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=30649
違反を報告
引用返信

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



■記事リスト / ▼下のスレッド / ▲上のスレッド
■35631 / 親記事)  oledbでdatatableを取得するときにエラーになる
□投稿者/ 末長 邦明 一般人(1回)-(2024/11/08(Fri) 14:00:33)
  • アイコン環境/言語:[windows11/vb.net] 
    分類:[.NET] 

    yahoo知恵袋にマルチポストしています。
    vb.net(VS2022)で
    oledbでdatatableを取得するときのエラーについて質問です。
    下記ソースでテストを行っていますが、
    ' データを取得する
    da.Fill(excelToDt)
    のところで、「引数が無効です」となってしまいます。
    debugモードでは、正常に動作します。
    どのように対応すればよろしいでしょうか?
    よろしくお願い申し上げます。

    Public Function excelToDt(ByVal p_fileNm As String, Optional ByVal p_sheetNm As String = "Sheet1") As DataTable

    Dim con As New OleDbConnection()
    Dim cmd As New OleDbCommand()
    Dim da As New OleDbDataAdapter()
    Dim FileName As String = Path.GetFileName(p_fileNm)
    Try

    excelToDt = New System.Data.DataTable()

    con.ConnectionString =
    "Provider=Microsoft.ACE.OLEDB.12.0; " &
    "Data Source=" & p_fileNm & ";" & "Extended Properties=""Excel 12.0;HDR=YES;"""
    ' コネクションの設定
    cmd.Connection = con

    ' SQL文の設定
    cmd.CommandText = "SELECT * FROM [" & p_sheetNm & "$] "

    ' SELECTコマンドの設定
    da.SelectCommand = cmd

    ' データを取得する
    da.Fill(excelToDt)

    Catch ex As Exception
    Throw
    Finally
    con.Dispose()
    cmd.Dispose()
    da.Dispose()
    End Try

    End Function
    ----------------------------------------
    internal OleDbConnectionInternal(OleDbConnectionString constr, OleDbConnection connection)
    {
    ConnectionString = constr;
    if (constr.PossiblePrompt && !Environment.UserInteractive)
    {
    throw ODB.PossiblePromptNotUserInteractive();
    }
    try
    {
    OleDbServicesWrapper objectPool = GetObjectPool();
    _datasrcwrp = new DataSourceWrapper();
    objectPool.GetDataSource(constr, ref _datasrcwrp);
    if (connection != null)
    {
    _sessionwrp = new SessionWrapper();
    OleDbHResult oleDbHResult = _datasrcwrp.InitializeAndCreateSession(constr, ref _sessionwrp);
    if (OleDbHResult.S_OK > oleDbHResult || _sessionwrp.IsInvalid)
    {
    Exception ex = OleDbConnection.ProcessResults(oleDbHResult, null, null);
    throw ex;
    }
    OleDbConnection.ProcessResults(oleDbHResult, connection, connection);
    }
    }
    catch
    {
    if (_sessionwrp != null)
    {
    _sessionwrp.Dispose();
    _sessionwrp = null;
    }
    if (_datasrcwrp != null)
    {
    _datasrcwrp.Dispose();
    _datasrcwrp = null;
    }
    throw; ←ここでエラーになります
    }
    }

違反を報告
引用返信

▽[全レス1件(ResNo.1-1 表示)]
■35632 / ResNo.1)  Re[1]: oledbでdatatableを取得するときにエラーになる
□投稿者/ 末長 邦明 一般人(2回)-(2024/11/08(Fri) 15:16:23)
  • アイコンありがとうございます。
    マクロファイル(.xlsm)を開こうとしてエラーになっていました。
    通常のExcelファイル(.xlsx)に変更したところ、releaseモードでも正常に動作しました。

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

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



■記事リスト / ▼下のスレッド / ▲上のスレッド
■35626 / 親記事)  DataGridViewの複数行選択で歯抜け選択を無効にしたい
□投稿者/ HKane 一般人(1回)-(2024/09/20(Fri) 15:16:15)
  • アイコン環境/言語:[,NETFramework4.0、VB.net2010、Windows7~10] 
    分類:[.NET] 

    DataGridViewで、
    SelectionMode = FullRowSelect
    MultiSelect = True
    の状態にすると、複数行選択が可能ですが、
    1行のみ、または、連続行選択のみを許し、
    例えば10行あるデータで2行目と5行目のみの選択のような歯抜け選択を許さないようにする方法はあるでしょうか?

    また、DataGridViewで、ctrlキーを無効にする(歯抜け選択をできないようにするための手段)方法はあるでしょうか?

違反を報告
引用返信

▽[全レス2件(ResNo.1-2 表示)]
■35627 / ResNo.1)  Re[1]: DataGridViewの複数行選択で歯抜け選択を無効にしたい
□投稿者/ 魔界の仮面弁士 大御所(1576回)-(2024/09/20(Fri) 18:58:46)
  • アイコン
    No35626に返信(HKaneさんの記事)
    > 1行のみ、または、連続行選択のみを許し、
    > 例えば10行あるデータで2行目と5行目のみの選択のような歯抜け選択を許さないようにする方法はあるでしょうか?
    
    泥臭い方法しか思いつきませんでした。
    
    Public Class Form1
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            DataGridView1.AllowUserToAddRows = False
            DataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect
            DataGridView1.ColumnCount = 10
            DataGridView1.RowCount = 1000
        End Sub
    
        Private Sub DataGridView1_SelectionChanged(sender As Object, e As EventArgs) Handles DataGridView1.SelectionChanged
            Dim selectedRows = DataGridView1.SelectedRows.OfType(Of DataGridViewRow)().ToArray()
            Dim firstRow = selectedRows.FirstOrDefault()
            Dim lastRow = selectedRows.LastOrDefault()
            If If(firstRow, lastRow) Is Nothing Then
                Return
            End If
            Dim firstRowIndex = selectedRows.Min(Function(r) r.Index)
            Dim lastRowIndex = selectedRows.Max(Function(r) r.Index)
            If selectedRows.Length < (lastRowIndex - firstRowIndex) + 1 Then
                Dim unselectedRows = DataGridView1.Rows.Cast(Of DataGridViewRow)() _
                    .Skip(firstRowIndex) _
                    .Take(lastRowIndex - firstRowIndex + 1) _
                    .Where(Function(r) Not r.Selected) _
                    .ToArray()
                For Each row In unselectedRows
                    row.Selected = True
                Next
            End If
        End Sub
    End Class

違反を報告
引用返信
■35628 / ResNo.2)  Re[1]: DataGridViewの複数行選択で歯抜け選択を無効にしたい
□投稿者/ KOZ 一般人(39回)-(2024/09/21(Sat) 18:58:18)
  • アイコン
    No35626に返信(HKaneさんの記事)
    > DataGridViewで、
    > SelectionMode = FullRowSelect
    > MultiSelect = True
    > の状態にすると、複数行選択が可能ですが、
    > 1行のみ、または、連続行選択のみを許し、
    > 例えば10行あるデータで2行目と5行目のみの選択のような歯抜け選択を許さないようにする方法はあるでしょうか?
    
    
    DataGridView を継承したコントロールを作り、SetSelectedRowCore をオーバーライドして、すでに選択された行が存在する場合、上の行か下の行が選択状態かどうかをチェックするといいのでは。
    
    Public Class DataGridViewEx
        Inherits DataGridView
    
        Protected Overrides Sub SetSelectedRowCore(rowIndex As Integer, selected As Boolean)
            If selected AndAlso SelectedRows.Count > 0 Then
                If Not IsRowSelected(rowIndex + 1) AndAlso Not IsRowSelected(rowIndex - 1) Then
                    selected = False
                End If
            End If
            MyBase.SetSelectedRowCore(rowIndex, selected)
        End Sub
    
        Private Function IsRowSelected(rowIndex As Integer) As Boolean
            If rowIndex >= 0 AndAlso rowIndex < RowCount Then
                Return Rows(rowIndex).Selected
            End If
            Return False
        End Function
    
    End Class
    

違反を報告
引用返信

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



■記事リスト / ▼下のスレッド / ▲上のスレッド
■35624 / 親記事)  証券会社へのログイン
□投稿者/ Takuya 一般人(1回)-(2024/07/27(Sat) 13:01:40)
  • アイコン環境/言語:[VB.NET] 
    分類:[.NET] 

    visual studio 2022を使用しています。
    SBI証券のページを開き、指定したIDとパスワードでログインするという処理を行いたいのですが、調べてもわからず、ご教示いただけますでしょうか。

    1つのPCで複数の人が使用しているため、VBからログアウトとログインの処理を
    行いたいと思っています。

    SBI:https://site2.sbisec.co.jp/ETGate/
違反を報告
引用返信

▽[全レス1件(ResNo.1-1 表示)]
■35625 / ResNo.1)  Re[1]: 証券会社へのログイン
□投稿者/ とあるひと 一般人(1回)-(2024/09/17(Tue) 14:15:54)
  • アイコンNo35624に返信(Takuyaさんの記事)
    > visual studio 2022を使用しています。
    > SBI証券のページを開き、指定したIDとパスワードでログインするという処理を行いたいのですが、調べてもわからず、ご教示いただけますでしょうか。
    >
    > 1つのPCで複数の人が使用しているため、VBからログアウトとログインの処理を
    > 行いたいと思っています。
    >
    > SBI:https://site2.sbisec.co.jp/ETGate/

    Seleniumを使えばログインはできるようになると思います。
    詳しくはこちらをご覧ください。
    https://tekutekku.com/csharp_selenium_basic_code/
違反を報告
引用返信

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



■記事リスト / ▲上のスレッド
■35623 / 親記事)  ユーザーフォームに埋め込んだAutoCADの変化を捉える
□投稿者/ SASAYAN 一般人(1回)-(2024/07/21(Sun) 17:46:55)
  • アイコン環境/言語:[VB.NET FrameWork4.8] 
    分類:[.NET] 

    VB.NETでAutoCADに連携する方法で困っています。
    起動中のAutoCADに複数のドキュメント(ファイル)が開いているとします。
    ファイルタブが複数あって、これをクリックして切り替えるたびに発生する
    イベントを捉えてリストボックスにレイヤーのリストを表示させたいです。
    
    ファイルタブの切り替えを捉えるのにどの様に記述すればよいか困っています。
    コードの40行目あたりの
     Dim docManager As DocumentCollection = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager
     AddHandler docManager.DocumentActivated, AddressOf Me.DocumentActivated
    ここで引っ掛かってしまいます。
    
    現在のコード
    Imports System.Runtime.InteropServices
    Imports Autodesk.AutoCAD.Interop
    Imports Autodesk.AutoCAD.Interop.Common
    Imports Autodesk.AutoCAD.Runtime
    Imports Autodesk.AutoCAD.ApplicationServices
    Imports Autodesk.AutoCAD.DatabaseServices
    Imports Autodesk.AutoCAD.Geometry
    Imports Microsoft.VisualBasic
    
    Public Class Form1
        Private acadApp As AcadApplication
    
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            Try
                ' 新しいAutoCADアプリケーションを作成
                acadApp = New AcadApplication()
                acadApp.Visible = True
            Catch ex As System.Runtime.InteropServices.COMException
                MessageBox.Show("AutoCADのインスタンスを作成できませんでした: " & ex.Message)
                Return
            Catch ex As Exception
                MessageBox.Show("予期しないエラーが発生しました: " & ex.Message)
                Return
            End Try
    
            If acadApp Is Nothing Then
                MessageBox.Show("AutoCADアプリケーションを初期化できませんでした。")
                Return
            End If
    
            ' AutoCADのウィンドウをForm1の指定位置に埋め込む
            Dim acadHandle As IntPtr = New IntPtr(acadApp.HWND)
            SetParent(acadHandle, Me.Handle)
    
            ' 初期位置とサイズを設定
            ResizeAutoCADWindow()
    
            ' Form1のリサイズイベントにハンドラを追加
            AddHandler Me.Resize, AddressOf Form1_Resize
    
            ' 初回のレイヤーリストを取得して表示
            PopulateLayerList()
    
            ' ドキュメントアクティベートイベントの追加
            Dim docManager As DocumentCollection = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager
            AddHandler docManager.DocumentActivated, AddressOf Me.DocumentActivated
        End Sub
    
        Private Sub Form1_Resize(sender As Object, e As EventArgs)
            ' AutoCADウィンドウをForm1の新しいサイズに合わせてリサイズ
            ResizeAutoCADWindow()
        End Sub
    
        Private Sub ResizeAutoCADWindow()
            Dim acadHandle As IntPtr = New IntPtr(acadApp.HWND)
    
            ' panelControlsの右側にAutoCADウィンドウを表示する
            Dim leftPosition As Integer = panelControls.Width
            Dim topPosition As Integer = 0
            Dim width As Integer = Me.ClientSize.Width - panelControls.Width
            Dim height As Integer = Me.ClientSize.Height
    
            MoveWindow(acadHandle, leftPosition, topPosition, width, height, True)
        End Sub
    
        Private Sub PopulateLayerList()
            Try
                ' Layer_LBをクリア
                If Layer_LB Is Nothing Then
                    MessageBox.Show("Layer_LBが初期化されていません。")
                    Return
                End If
                Layer_LB.Items.Clear()
    
                ' AutoCADの現在のドキュメントを取得
                Dim activeDoc As AcadDocument = acadApp.ActiveDocument
    
                ' レイヤーを取得してリストボックスに追加
                For Each layer As AcadLayer In activeDoc.Layers
                    Layer_LB.Items.Add(layer.Name)
                Next
            Catch ex As Exception
                MessageBox.Show("レイヤーリストの取得中にエラーが発生しました: " & ex.Message)
            End Try
        End Sub
    
        ' ドキュメントがアクティブになったときにレイヤーリストを更新する
        Private Sub DocumentActivated(sender As Object, e As DocumentCollectionEventArgs)
            PopulateLayerList()
        End Sub
    
        ' WinAPI関数の宣言
        <System.Runtime.InteropServices.DllImport("user32.dll")>
        Private Shared Function SetParent(hWndChild As IntPtr, hWndNewParent As IntPtr) As IntPtr
        End Function
    
        <System.Runtime.InteropServices.DllImport("user32.dll")>
        Private Shared Function MoveWindow(hWnd As IntPtr, x As Integer, y As Integer, nWidth As Integer, nHeight As Integer, bRepaint As Boolean) As Boolean
        End Function
    
        Private Sub Form1_FormClosing(sender As Object, e As FormClosingEventArgs) Handles MyBase.FormClosing
            ' AutoCADアプリケーションをクリーンアップ
            If acadApp IsNot Nothing Then
                Try
                    acadApp.Quit()
                Catch ex As Exception
                    ' 例外が発生しても続行
                Finally
                    ' COMオブジェクトの解放
                    Marshal.ReleaseComObject(acadApp)
                    acadApp = Nothing
                End Try
            End If
    
            ' ドキュメントアクティベートイベントの削除
            Dim docManager As DocumentCollection = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager
            RemoveHandler docManager.DocumentActivated, AddressOf Me.DocumentActivated
        End Sub
    End Class
    
    ここまでフォーム上にAutoCADを埋め込み表示させるまでできましたが
    肝心のAutoCADの変化を捉える部分でうまくいきません。
    よろしくお願いします。

違反を報告
引用返信






Mode/  Pass/


- Child Tree -