C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

全過去ログを検索

<< 0 | 1 >>
■88988  Re[1]: C#のデータベース接続について
□投稿者/ 魔界の仮面弁士 -(2018/10/24(Wed) 09:17:14)
    No88987 (テトリス さん) に返信
    > accdb形式のaccessのフォルダを紐づけたいと考えています。
    フォルダ……ですか? Access accdb の?

    フォルダー内に複数の(あるいは単一の) .accdb ファイルがあって、
    そのデータを読み書きしたい、という意味でしょうか。


    > VisitUser.accdb
    > ┗テーブル名:来客情報_T
    >   ┗フィールド:時刻
    >   ┗フィールド:会社名
    >   ┗フィールド:氏名

    どの部分が分からないのかが分からないのですが、どのデータベースが相手でも、
    接続するプロバイダーと接続文字列が異なるだけで、基本的な読み書きの手順は
    同じなので、『ADO.NET』に関するチュートリアルを一通り試してみることをお奨めします。

    まずは手順にしたがって実装を進めていけば、やるべきことや不明瞭な点が
    明らかになってくるかと思います。


    WPF + Access 2016 + ADO.NET(OdbcConnection)
    https://water2litter.net/gin/?p=1424

    WPF + Access 2016 + ADO.NET(OleDbConnection)
    https://water2litter.net/gin/?p=1849

    WinForms + Access 2007 + ADO.NET(OleDbConnection)
    https://www.itlab51.com/?p=4417

    WinForms + Access .mdb/.accdb + ADO.NET(OleDbConnection)
    https://msdn.microsoft.com/ja-jp/library/ms171893.aspx
記事No.88987 のレス /過去ログ153より / 関連記事表示
削除チェック/

■89237  C#におけるプロシージャと引数
□投稿者/ 34 -(2018/11/12(Mon) 16:19:02)

    分類:[C#] 

    VB.NETからC#に変換作業をしている初心者です。

    public int Name(string ss2, string ss1)

    この場合、stringである引数ss2とss1をint型で返したいのですが、どうすれば良いでしょうか。
親記事 /過去ログ153より / 関連記事表示
削除チェック/

■89439  Re[4]: ストアアプリ版のEXCELをCreateObjectする方法
□投稿者/ Azulean -(2018/11/28(Wed) 22:34:20)
    2018/11/28(Wed) 23:42:04 編集(投稿者)

    No89438 (Azulean さん) に返信
    > // 注意:UWP 版 Office をインストールして観察したことがないので、間違っているかもしれません。

    実験環境にインストールして見たところ以下の点を確認できました。

    ・レジストリエディタで HKEY_CLASSES_ROOT に Excel で始まるキーは存在しない。
    ・Excel の UWP 版のインストール先 C:\Program Files\WindowsApps\Microsoft.Office.Desktop.Excel_16050.11029.20079.0_x86_8wekyb3d8bbwe に AppxManifest.xml があり、その中に COM の定義がある。

    一応、AppxManifest.xml の中には VersionIndependentProgId="Excel.Application" とあるので考慮はされていそうな感じはあります。

    -----
    私の認識としては COM 生成のいくつかの API がインストール済みの UWP に含まれる AppxManifest.xml を加味した振る舞いをしている。
    この結果、レジストリに登録がなくても COM オブジェクトは生成できる。
記事No.89420 のレス /過去ログ154より / 関連記事表示
削除チェック/

■89618  Re[7]: Excelオブジェクトに関して(VB6)
□投稿者/ 魔界の仮面弁士 -(2018/12/10(Mon) 14:13:11)
    2018/12/10(Mon) 14:40:24 編集(投稿者)

    No89616 (k3user さん) に返信
    >> また、Excel のバージョンは何でしょうか?
    > Excel 2012で確認を行っています。

    言葉足らずで済みません。
    知りたかったのはマイナーバージョンとか C2R / MSI の情報とかです。

    https://support.microsoft.com/ja-jp/help/2121559/
    https://docs.microsoft.com/en-us/officeupdates/update-history-office-2010-click-to-run

    「14.0.4760.1000 (32 ビット)」とか
    「14.0.5128.5000 (32 ビット)」とか
    「14.0.6123.5001 (32 ビット)」とか
    「14.0.7106.5003 (32 ビット)」とか


    No89591 の段階で 2010 & 14.0 と書かれていたので、メジャーバージョンは分かって
    いるつもり…・・・だった――のですが、今度は Excel 2012 になっていますね…?
    それだと Windows 版ではなく、Mac 版ということになってしまうのですが。


    > 調査のため以下の2の処理をすべてコメントアウト
    > してみたのですが、それでも通貨型に変換されてしまいます。
    > 1.Excelオープン
    > 2.データ取得&代入
    > 3.Excelクローズ

    取得も代入もせず、開いて閉じるだけ(上書き保存すらしない)ということでしょうか。
    それとも Save あるいは SaveAs は行うということでしょうか。

    環境依存の問題なのかどうか、再現性を確認したいので、
    手順 1 と 3 だけに単純化した「現象を再現可能なコード」を
    作成してもらえないでしょうか。



    No89615 (k3user さん) に返信
    > ファイル破損の可能性も考えられるため、全く新しいシートで
    > 試してみましたが、改善はされませんでした。

    新規シートではなく、新規ブックで試してみてください。
    (破損しているブックに新しいシートを追加しても、改善するとは限らないので)


    【追記】
    1 つ思い出しました。
    Workbook の SaveAs メソッドを呼び出す際に、
    Local 引数を明示してみてください。


    『Excelを操作(Excelファイルを開く、保存する、閉じる)するだけで表示形式が勝手に変わってしまう』
    https://social.msdn.microsoft.com/Forums/ja-JP/4e454fcc-93f8-4372-98ac-9a65fb3e38e3/excelexcel


    上記は、Excel 2013で Workbooks.Open / Save を実施して
    再度ファイルを開くと、表示形式が変わってしまうというもので、
    バージョンや使用メソッドが微妙に異なるのですが、
    現象としては酷似しているので、一応試してみる価値がありそうです。


    参考までに、上記 URL 事象の当時の検証バージョンを記載しておきます。

    - 再現しないことを確認
    ・ Office 2007 SP1、SP2、SP3
    ・ Office 2010 RTM、SP1、SP2
    - 再現することを確認
    ・ Office 2013 C2R (15.0.4711.1003)


    この現象は、Office 文書の保存時に、各国で統一形式とするために、
    VB6 等からの操作や VBA での動作時にのみ、Excel の内部ロケールが
    一時的に英語モードの切り替わって処理されるためだそうです。

    そのため、この問題が発生するバージョンの Excel では、
    意図的に Local 引数に True を指定して SaveAs することで
    英語への切り替えが抑制され、問題が回避されるのだとか。


    なお、SaveAs メソッドの「Local 引数」は 2002 以降で使用可能です。
    https://www.saka-en.com/office/vba-saveas-text-date-num/
記事No.89591 のレス /過去ログ154より / 関連記事表示
削除チェック/

■89786  Re[1]: buttonのドラッグリサイズ C#プログラム
□投稿者/ 魔界の仮面弁士 -(2018/12/26(Wed) 10:25:04)
    No89782 (Rty1143 さん) に返信
    > C# windows form application で button をフォーム上に配置しておりますが、
    > このbuttonの端をマウスで摘んでドラッグでリサイズする方法を調べています。
    > 分かる方いませんか?
    
    これでどうでしょう。Load イベントなどで
    
     private void Form1_Load(object sender, EventArgs e)
     {
      Resizer.Attach(button1);
      Resizer.Attach(button2);
      Resizer.Attach(button3);
     }
    
    のように呼ぶことで、ドラッガブルなコントロールになります。
    
    //-----
    using System;
    using System.Windows.Forms;
    using System.Runtime.InteropServices;
    using System.Drawing;
    
    public static class Resizer
    {
        public static void Attach(Control target)
        {
            Attach(target, 5);
        }
    
        public static void Attach(Control target, int bandWidth)
        {
            if (bandWidth <= 0) { throw new ArgumentOutOfRangeException(nameof(bandWidth), bandWidth, "1以上の値を指定してください。"); }
            target.MouseDown += (sender, e) =>
            {
                int cmd = GetResizeCommand(target.Size, e.Location, bandWidth);
                if (cmd != 0)
                {
                    SetCapture(target.Handle);
                    ReleaseCapture();
                    SendMessage(target.Handle, WM_SYSCOMMAND, SC_SIZE | cmd, 0);
                }
            };
            target.MouseMove += (sender, e) =>
            {
                switch (GetResizeCommand(target.Size, e.Location, bandWidth))
                {
                    case 1:
                    case 2:
                        target.Cursor = Cursors.SizeWE;
                        break;
                    case 3:
                    case 6:
                        target.Cursor = Cursors.SizeNS;
                        break;
                    case 4:
                    case 8:
                        target.Cursor = Cursors.SizeNWSE;
                        break;
                    case 5:
                    case 7:
                        target.Cursor = Cursors.SizeNESW;
                        break;
                    default:
                        target.Cursor = Cursors.Default;
                        break;
                }
            };
        }
    
        private static int GetResizeCommand(Size size, Point point, int bandWidth)
        {
            int WMSZ = 0;
            if (point.X < bandWidth) { WMSZ += 1; }
            if (point.Y < bandWidth) { WMSZ += 3; }
            if (size.Width - bandWidth < point.X) { WMSZ += 2; }
            if (size.Height - bandWidth < point.Y) { WMSZ += 6; }
            return WMSZ;
        }
    
        #region P/Invoke
        [DllImport("user32")]
        private static extern int SendMessage(IntPtr hWnd, int uMsg, int wParam, int lParam);
        [DllImport("user32")]
        private static extern bool SetCapture(IntPtr hWnd);
        [DllImport("user32")]
        private static extern bool ReleaseCapture();
        private const int WM_SYSCOMMAND = 0x0112;
        private const int SC_MOVE = 0xF010;
        private const int SC_SIZE = 0xF000;
        #endregion
    }
    
    //-----
    
    なお、上記のサンプル最低限のものなので、たとえば
     ・リサイズ可能な最小・最大サイズを設定できない
     ・同じコントロールに何度もアタッチできてしまう
     ・解除処理(デタッチ)を実装していない
    といった実装課題があります。
記事No.89782 のレス /過去ログ154より / 関連記事表示
削除チェック/

■89947  Re[5]: リッチテキストボックスでカラー情報をコピーする方法
□投稿者/ 魔界の仮面弁士 -(2019/01/23(Wed) 10:52:43)
    2019/01/23(Wed) 12:01:15 編集(投稿者)

    No89928 (イエメン さん) に返信
    > どうすればカラーなどの情報も同時に貼り付けることができますか?

    (案1)Excel からコピーした内容を Word に貼り、それを再コピーして RichTextBox に貼る

    (案2)Excel の書式情報(Biff12 等)を解析して Rtf 書式に再構築するコードを自力実装する

    (案3)Excel オートメーションで、一文字ずつ書式情報を読み取って処理していく
     http://hanatyan.sakura.ne.jp/vbhlp/Excel13.htm

    (案4)有償/無償の RTF コンバーターを探してきて利用する
     https://www.sautinsoft.com/convert-excel-xls-to-pdf/xlsx-to-rtf-dotnet-csharp.php
     https://convertio.co/ja/xlsx-rtf/



    No89940 (Azulean さん) に返信
    > Excel 2010 をコピー元として様子を見る限り、形式を選択して貼り付けで「リッチテキスト形式」を選んでも色がつかない

    こんな情報もあったので、Excel のバージョンを上げれば
    マシになるかな…と思いきや、やっぱり駄目でした。無念。

    『Excel 2016 でリッチ テキストを使用すると、文字書式設定が失われる』
    「この問題は、バージョン 1708 (8431.2109) で修正されています。」
    https://support.office.com/ja-jp/article/e0536ed1-b339-45fa-b665-917fe165d957


    とりあえず、手持ちの Excel 2016 ver1812 でコピー操作を行ってみて、
    その時にクリップボードに送られる形式を調べてみました。
    先頭の○×は、RichTextBox に貼ることができるかどうかを示したものです。


    クリップボード内容の確認には、フリーソフトの「クリップ見え窓」を利用しました。



    《色情報を含むが、OLE 埋め込みや OLE リンクになるもの》
    ○ "Embed Source" ※ 貼り付け後にダブルクリックすると編集用の Excel が起動する
    ○ "Link Source" ※ コピー元の Excel ファイルを編集すると RichTextBox 側も自動で書き換わる


    《色情報を含むが、画像形式となってしまうもの》
    △ "EnhancedMetafile" (CF_ENHMETAFILE = 14) ※ 拡張メタファイル形式。
    ○ "MetfaFilePict" (CF_METAFILEPICT = 3) ※ メタファイル形式。
    × "Bitmap" (CF_BITMAP = 2) ※ ビットマップ形式。System.Drawing.Bitmap として得られた。


    《色情報を含められる形式だが、色情報が記録されていなかった物》
    ○ "Rich Text Format"


    《色情報を含む形式で、色情報が記録されていた物》
    × "SymblicLink" (CF_SYLK = 4) ※ Microsoft SYLK 形式。
    × "Biff12" ※ Excel 2007 形式。
    × "Biff8" ※ Excel 97〜2003 形式。
    × "Biff5" ※ Excel 95 形式。
    × "XML Spreadsheet" ※ Office XML 形式。
    × "HTML Format" ※ HTML 形式。


    《そもそも色情報を含まない形式の物》
    × "DataInterchangeFormat" (CF_DIF = 5) ※ VisiCalc 形式。
    ○ "UnicodeText" (CF_UNICODETEXT = 13) ※ UTF-16 なタブ区切りテキスト。
    ○ "Text" (CF_TEXT = 1) ※ 既定のコードページによるタブ区切りテキスト。
    × "Csv" ※ ANSI コードページによるカンマ区切りテキスト。


    《その他の形式》
    × "DataObject"
    × "Hyperlink"
    × "Object Descriptor"
    × "Link Source Descriptor"
    × "Link"
記事No.89928 のレス /過去ログ155より / 関連記事表示
削除チェック/

■90511  Re[6]: AddHandler Eventの別スレッドについて
□投稿者/ 魔界の仮面弁士 -(2019/03/15(Fri) 11:55:19)
    2019/03/15(Fri) 12:07:39 編集(投稿者)

    解決済みで閉じられているので、いちおうチェックは付けた状態に戻しておきます。


    No90477 (TanuTanu さん) に返信
    > その結果、yahooButton = DirectCast(doc.all.item("yahoo"), mshtml.IHTMLElement)の行にて下記エラーが発生致しました。

    その行のどの部分に問題があるのかを確認してみてください。

    NullReferenceException とは、インスタンスが空の時、すなわち
    オブジェクトが Nothing である場合に、
    そのメンバーを操作しようとして発生する例外ですよね。


    If doc Is Nothing Then
     MsgBox("doc が空だった")
    ElseIf doc.all Is Nothing Then
     MsgBox("doc.all が空だった")
    ElseIf doc.all.item("yahoo") Is Nothing Then
     MsgBox("doc.all.item(""yahoo"") が空だった")
    Else
     MsgBox("いずれも空ではなさそう")
     yahooButton = DirectCast(doc.all.item("yahoo"), mshtml.IHTMLElement)
    End If




    > FindWindowExWの値は0ですが、FindWindowではハンドル値取得できました。
    > PWnd1 = FindWindowExW(IntPtr.Zero, IntPtr.Zero, "TabThumbnailWindow", "JavaScript テスト - Internet Explorer")

    示されているのが結果だけで、要因となりうる情報が隠されたままなので、修正すべき箇所を指摘できないです。(^^;

    あえてもう一度質問させていただきます。
    『その API (FindWindowEx および FindWindowExW) の宣言部はどうなっていますか?』( No90475 の再掲 )


    少なくとも当方では、下記の API 宣言で取得できています。

    ' Imports System.Runtime.InteropServices

    ' === 案1 ===
    <DllImport("user32", CharSet:=CharSet.Unicode, SetLastError:=True)>
    Private Shared Function FindWindowExW(hwndParent As IntPtr, hwndChildAfter As IntPtr, lpszClass As String, lpszWindow As String) As IntPtr
    End Function

    ' === 案2 ===
    <DllImport("user32", CharSet:=CharSet.Auto, SetLastError:=True)>
    Private Shared Function FindWindowEx(hwndParent As IntPtr, hwndChildAfter As IntPtr, lpszClass As String, lpszWindow As String) As IntPtr
    End Function

    ' === 案3 ===
    Private Declare Unicode Function FindWindowExW Lib "user32" (hwndParent As IntPtr, hwndChildAfter As IntPtr, <MarshalAs(UnmanagedType.LPTStr)> lpszClass As String, <MarshalAs(UnmanagedType.LPTStr)> lpszWindow As String) As IntPtr

    ' === 案4 ===
    Private Declare Auto Function FindWindowEx Lib "user32" (hwndParent As IntPtr, hwndChildAfter As IntPtr, <MarshalAs(UnmanagedType.LPTStr)> lpszClass As String, <MarshalAs(UnmanagedType.LPTStr)> lpszWindow As String) As IntPtr




    宣言が間違っていて、IntPtr.Zero が返却されてしまうパターン。

    ' === 没1 ===
    <DllImport("user32", EntryPoint:="FindWindowExW", SetLastError:=True)>
    Private Shared Function FindWindowEx(hwndParent As IntPtr, hwndChildAfter As IntPtr, lpszClass As String, lpszWindow As String) As IntPtr
    End Function

    ' === 没2 ===
    <DllImport("user32", SetLastError:=True)>
    Private Shared Function FindWindowExW(hwndParent As IntPtr, hwndChildAfter As IntPtr, lpszClass As String, lpszWindow As String) As IntPtr
    End Function

    ' === 没3 ===
    Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExW" (hwndParent As IntPtr, hwndChildAfter As IntPtr, lpszClass As String, lpszWindow As String) As IntPtr



    正しい宣言ではないが、一応呼び出せてしまうパターン。

    ' === 非推奨1 ===
    Private Declare Unicode Function FindWindowExW Lib "user32" (hwndParent As IntPtr, hwndChildAfter As IntPtr, lpszClass As String, lpszWindow As String) As IntPtr

    ' === 非推奨2 ===
    Private Declare Unicode Function FindWindowEx Lib "user32" Alias "FindWindowExW" (hwndParent As IntPtr, hwndChildAfter As IntPtr, lpszClass As String, lpszWindow As String) As IntPtr



    >  WEBページ・・・CreateObject("Shell.Application").Windowsで対応しております。
    これを用いている部分のコードも見せていただけないでしょうか。

    SHDocVw.ShellWindows を宣言しておきながら、FindWindowEx API や、GetIEDocument までも
    追加で呼び出している理由が、どうしても分からなかったのです。

    No90463 の発言より、「objIE.LocationName」を利用しているであろうことは推察できましたが、
    目的は LocationName プロパティでウィンドウのタイトルを得ることだけなのでしょうか。
    あるいは HWND プロパティからウィンドウハンドルも得ているとか?

    objIE.Document プロパティを通じて HTMLDocument を得ることができるはずなので、
    わざわざ GetIEDocument を呼び出す必要性は無いと思っています。( No90469 で指摘 )

    (例)
    http://jumbofoot.cocolog-nifty.com/yass_vbnet_tips/2007/02/shellhtmldocume_f1cd.html


    WM_HTML_GETOBJECT でないと取得できない相手の場合は、API 宣言が必要になりますが、
    その場合、今度は CreateObject("Shell.Application").Window を使う意味が分からない…。



    >  上記WEBページから派生したWEBページダイアログ ・・・ GetIEDocument で対応(現在、ここのボタンクリックのイベントを対応しております。)

    ここでいう『派生』とは何を示していますか? ページ遷移の事でしょうか?

    ページが遷移したのであれば、以前の HTMLDocument はもう使えないので、
    読み込みが完了したことを通知するための DocumentComplete イベントにて、
    イベント引数 pDisp の Document プロパティを受け取るようにします。
    (フレームを持つページの場合は、各フレームごとに発生することに注意)

    あるいは、ターゲットとなる InternetExplorer オブジェクト(IWebBrowser2)を保持しておいて、
    その Document プロパティを取得しなおすという方法も使えますが、いずれにせよ、
    読み込みが完了する前に GetIEDocument なり Document プロパティなりで
    HTMLDocument を得ていた場合、DOM が不完全な状態になっていることがあります。

    なので、取得した HTMLDocument が、目的のページの内容を指しているかを
    確認しておくことも重要です。(これも No90469 で指摘 )


    それに、FindWindowEx を使うにしても、その使い方が不自然に思えます。
    そもそも "TabThumbnailWindow" クラスを探している理由は何でしょうか?
    先の GetIEDocument を使うことが目的なら、探すべきウィンドウは
    "Internet Explorer_Server" クラスのウィンドウ(またはその親ウィンドウ)の
    ハンドルであるはずですよね。


    また、「WEBページダイアログ」とは何を指していますか?
    キャプションが "JavaScript テスト - Internet Explorer" となる、 No90454
    https://www.javadrive.jp/javascript/event/sample2_1.html だとすれば、
    そもそもダイアログは存在していません。
    別のページが対象なのかもしれませんが、その場合は、doc.all.item("yahoo") は存在しないかもしれませんし。

    No90476 では「javascriptによる擬似モーダルダイアログ『だと思う』」とお答えいただきましたが、
    それが具体的になんであるのか(たとえば jQuery の colorbox とか)や、
    イベント割り当てが onclick なのかそれ以外なのかもはっきりしないままです。
記事No.90434 のレス / END /過去ログ156より / 関連記事表示
削除チェック/

■89538  Re[1]: 回答者の心得について
□投稿者/ &#129296; -(2018/12/03(Mon) 02:46:50)
    管理人によって考え方も違ってて統一も取れてないし、
    今のとこは統一とかせず、各自が過去ログ眺めてから
    多数派と思えた方に合わせていくスタンスでいいんじゃない?

    んでも、指摘だけの投稿が駄目ってのは共通見解にしたい。


    【2005/08/03 09:19:02】じゃんぬ さん / Re[2]: スレッドからのTextBoxスクロール
    http://bbs.wankuma.com/index.cgi?mode=red&namber=959&KLOG=1
    >
    > 勝手な申し出かもしれませんが、解決方法を書いて頂けませんか?
    > というのも、同じ悩みを持った方が、ここを訪れた時に解決のヒントになると思うからです。
    > 掲示板はサポートセンタではなく、善意のコミュニティですので、
    > 質問者も回答者も、インターネットリソースの供給をしていきたいと願っています。
    >



    【2007/03/06 11:57:26】じゃんぬねっと さん / Re[1]: 解決済みチェックの維持
    http://bbs.wankuma.com/index.cgi?mode=red&namber=1788&KLOG=10
    >
    >> この掲示板では、「解決済み」チェックがついた後、そのツリーにレスを付ける際に「解決済み」をつけないと、トピック一覧で見た時に未解決に見えてしまいます。
    >> レスを付ける際に、既に解決済みのツリーはチェックを外せないとか、デフォルトでチェックがついてるといったようにすることは可能でしょうか?
    >
    > そのように実装してしまえば、当然可能ではあります。
    >
    > Perl 自体は難しくないのですが、元のソースが結構 (いろんな意味で) すごいので、
    > あまり手をつけたくないというのもありますが、チェックが付いたままになるように改善を考えておきます。
    >
    > # その前に、正式なフォーラムをアップしてしまえば良いような気がします。(ここは、そもそも一時的な掲示板ですので)
    >


    【2008/02/06 21:45:00】中博俊 さん / Re[9]: 質問者と回答者のマナーについて
    http://bbs.wankuma.com/index.cgi?mode=red&namber=13935&KLOG=29
    >
    > この件について管理人内での意思統一の議論は行っていませんのでオフィシャルコメントではありません。(そう遠くはない意見だとは思いますが)
    > この掲示板は管理人が二人いるため管理人と指す場合には、不肖中博俊、もしくはじゃんぬねっとを指します。
    >
    > ・そもそもルールを守らない人のためのルールは守られない。
    > ・10行以上あるルールなんて誰も読みはしない
    > ・すべての判断(削除など)については管理人の責任で実施する
    >
    > これらが前提になります。
    > 結果的に常連組に対するルールは検討しても、一般ユーザについてのルールなどを設けるつもりはあまりありません。
    >
    > ・勝手にルールを決めて押しつけない
    > ・炎上させない
    > ・法に違反することはしない
    > ・公序良俗に反することはしない
    > ・マルチポストが悪いかどうかの指摘はしない(ブリッジ推奨です)
    > ・報告を求めない
    >
    > おそらくこのようなルールであれば策定するでしょう。
    >



    【2008/02/06 21:46:18】中博俊 さん / Re[10]: 質問者と回答者のマナーについて
    http://bbs.wankuma.com/index.cgi?mode=red&namber=13936&KLOG=29
    >
    > ちなみに解決済みマークも私は嫌いです。
    > どうせだれもチェックしないものなんておいても仕方がないとの考えからです。
    >
    > これについてはじゃんぬねっとと考え方が違ったはず・・・
    >



    【2008/10/28 10:48:45】中 博俊 さん / Re[12]: String型へのキャスト
    http://bbs.wankuma.com/index.cgi?mode=red&namber=27107&KLOG=49
    >
    >>・質問者が解決済みを忘れる → 指摘する これはOK?
    >>・質問者以外が解決済みを忘れる → 指摘する これはNG?
    > どちらもNGです。
    >
    > P.S.これで解決できたら解決済みでも押しといてくださいな〜
    >
    > これはOKです。
    > 指摘だけの投稿は勘弁してください。特に常連の方。
    > 常連は自重を求められるそういう掲示板です。
    >
記事No.89528 のレス /過去ログ156より / 関連記事表示
削除チェック/

■91529  Re[3]: メモリリークに関して
□投稿者/ 魔界の仮面弁士 -(2019/07/03(Wed) 19:14:23)
    No91518 (kiku さん) に返信
    >> For i = 0 To controlCollection.Count - 1
    >>  Dim control As Control = controlCollection(i)
    >>  control.Parent = Nothing
    >>  control.Dispose()
    >> Next
    >> .NET Compact Framework の実装については、上記に相当する処理を見つけることができませんでした。
    > なんと、これが直接的な原因みたいですね。

    Control.Dispose が上記を実装していれば、
    Form1 が Dispose される時に、Controls が再帰的に列挙され、
    Panel や Label といった子(あるいは子孫)コントロールも
    連動して解放されるはずなのですけれどね。


    とはいえ、GC 管理の仕組みがそもそも異なるので、
    .NET Framework 版との単純な比較はできません。
    (ソースコードは非公開ですし、逆アセンブルはライセンス上禁じられている…)

    実際 CE においても、親 Form が Dispose されれば、その配下のコントロール群も
    Dispose されることを確認できました。
    とはいえ、子コントロールの Dispose が確実に呼ばれているのか、
    たまたま GC されただけなのかまでは分かりません。

    一応、Dispose(False)時は、ApplicationThreadContext のファイナライズキューへの
    登録っぽい処理が行われると聞いたことがありますが、詳しいことは分からないです。


    CE 環境は Application.OpenForms でキャッシュされることが無いとは言え、
     (1) VB 特有の「My.Forms.フォーム名」プロパティでキャッシュされることはある
     (2) Form 右上の×を押しても Minimize されるだけ(Close/Dispose されるとは限らない)
    ということで、Dispose が呼ばれにくい状況に陥りやすそうではありますね。



    あと、経験則的なところで言えば、.NET Compact Framework 環境の場合、
    オブジェクトの使用後は、参照変数に Nothing 代入を積極的に行った方が良いみたいです。


    [宇宙仮面の研究室] - [Compact Framework のメモリ管理]
    https://uchukamen.wordpress.com/2007/01/23/compact-framework-%e3%81%ae%e3%83%a1%e3%83%a2%e3%83%aa%e7%ae%a1%e7%90%86/

    [SWK623] - [[.NET] WindowsMobile上のC#アプリのメモリリークを解決せよ!]
    https://swk623.com/2009/03/16/net-windowsmobile%E4%B8%8A%E3%81%AEc%E3%82%A2%E3%83%97%E3%83%AA%E3%81%AE%E3%83%A1%E3%83%A2%E3%83%AA%E3%83%AA%E3%83%BC%E3%82%AF%E3%82%92%E8%A7%A3%E6%B1%BA%E3%81%9B%E3%82%88%EF%BC%81/

    [スラド] - [#1411305]
    https://srad.jp/comment/1411305


    基本的には、変数のスコープを抜ければ GC 対象にはなりそうですが、
    Module / Shared 等で保持されたインスタンスや、
    メインフォームのフィールド変数がもつ参照の場合は、
    変数の寿命が長くなるので、自分で管理するしか無さそう。
記事No.91509 のレス /過去ログ158より / 関連記事表示
削除チェック/

■91626  Acrobat Readerを自動的に閉じる方法
□投稿者/ ペコ犬 -(2019/07/16(Tue) 12:34:15)

    分類:[VB.NET/VB2005 以降] 

    VB.NetよりPDFを印刷するプログラムを作成しています。
    PDFはプリンタに印刷されるのですが、
    Acrobat Readerが最小化されてタスクに表示されてしまいます。
    自動的にAcrobatを閉じたいのですが、何か良い方法はありますか?
    以下、ソースです。


    -----------------------------------------------------------------
    Private Sub Test()
    Dim p As New System.Diagnostics.Process()
    Dim fileNm As String = String.Empty

    'PDFファイルのパスを設定
    fileNm = "C:\Test\test1.pdf"
    p.StartInfo.FileName = fileNm
    p.StartInfo.Verb = "print"

    'Acrobatのコマンドライン引数設定
    p.StartInfo.Arguments = "/s /l /p /h"
    p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden
    'プロセスを新しいWindowで起動
    p.StartInfo.CreateNoWindow = True

    'プロセス起動
    p.Start()
    p.WaitForExit()
    End Sub
    -----------------------------------------------------------------


    ※Argumentsに問題があるのでは?と思い、参考になりそうなURLも見つけましたが、
     上手くいきませんでした。
     
     http://scripting.cocolog-nifty.com/blog/2007/07/adobe_reader_81_e41e.html
親記事 /過去ログ158より / 関連記事表示
削除チェック/

■91933  Re[14]: C++からVBへの変換
□投稿者/ 魔界の仮面弁士 -(2019/08/10(Sat) 16:23:56)
    2019/08/10(Sat) 16:26:50 編集(投稿者)

    No91932 (774RR さん) に返信
    > FFT なんぞテキトーに探せばいくらでもライブラリが転がっているような気のせいがする。

    この辺にありそうな気がします。確認はしていませんけど。
    https://www.nuget.org/packages?q=fft

    VB.NET に移植済みの実装が欲しいという話なら、こんなのもあります。
    http://numeric.world.coocan.jp/computer/vb/mathpack.htm

    Excel VBA でも良ければこんなのもありました。
    関数化はされていないものの、再帰処理を用いないフラットな実装。
    http://tsuyu.cocolog-nifty.com/blog/2007/03/publi.html


    真面目に再実装する気があるなら、複素数構造体を併用すると良いかもしれません。
    https://docs.microsoft.com/ja-jp/dotnet/api/system.numerics.complex.frompolarcoordinates

    複素数構造体を用いた実装例は下記にありました。
    F# なので参考にはしにくいかもしれませんが。
    http://www.fssnip.net/dC/title/fast-Fourier-transforms-FFT-



    No91927 (えんえん さん) に返信
    > For r As Integer = 0 To n - 1 Step n_radix
    >   fft(n_radix, theta * radix, tmpr, tmpi, ar, ai, r_st + r)
    > Next r
    > としてみましたが、
    > それでも、やはり正しい結果は得られないのですが、なぜでしょうか?

    オリジナル版にある
     fft(n_radix, theta * radix, &tmpr[r], &tmpi[r], ar, ai);
    ってのは
     fft(n_radix, theta * radix, &tmpr[r], &tmpi[r], &ar[0], &ai[0]);
    でもあるわけですし、再帰で tmpX と aX が入れ替わる点が肝かと思います。

    すなわち、index の offset は r_st 一つでは足りなくて、
    a 系と tmp 系の両方に対して用意すべきかと思います。
記事No.91899 のレス /過去ログ158より / 関連記事表示
削除チェック/

■92205  エクセルファイルを作成して表示する方法について
□投稿者/ 河童 -(2019/09/01(Sun) 09:38:12)

    分類:[C#] 

    エクセルファイルを作成して表示する方法について

    フォームにあるボタンのクリック時イベントでエクセルファイルを作成して、
    それを開いて表示したいと思っています。

    エクセルファイルの作成はできたのですが、
    1.Interop.Excelで作成
    2.ClosedXMLで作成
    それぞれわからないことがあります。

    1.Interop.Excelで作成
    インストールされているエクセルのバージョンがExcel2007、2010、2019とばらばらなことと、
    プロセスが残りやすいのであまり使用しない方がいいとネット情報にありました。
    確かにタスクマネージャーのプロセスに「EXCEL」が残っていたことがありました。
    今のコード上で解放の処理はしているのですが、どこか修正すべき点はありまか?

    2.ClosedXMLで作成
    ClosedXMLでエクセルを作成して保存はできるのですが、今回は保存までは必要なく
    エクセルにデータを入力して、エクセルを開いた状態のままにしておきたいです。
    ClosedXMLで作成したエクセルを開いたままにする方法はありますか?

    using ClosedXML.Excel;
    using Excel = Microsoft.Office.Interop.Excel;
    using System.Runtime.InteropServices;

    private Microsoft.Office.Interop.Excel.Application xls = null; // Excel自体
    private Microsoft.Office.Interop.Excel.Workbook book = null; // ブック
    private Microsoft.Office.Interop.Excel.Worksheet sheet = null; // シート

    public void ExcelVisibleToggle(Microsoft.Office.Interop.Excel.Application xls, bool setting)
    {
    if (xls.Visible == !setting)
    {
    xls.Visible = setting;
    }
    }

    // エクセル使用
    private void btnExcel_Click(object sender, EventArgs e)
    {

    this.xls = new Microsoft.Office.Interop.Excel.Application();
    // Excelを非表示:レスポンス向上
    ExcelVisibleToggle(xls, false);

    this.book = xls.Workbooks.Add();

    this.sheet = (Microsoft.Office.Interop.Excel.Worksheet)this.book.Sheets["sheet1"];

    // エクセルファイルに項目名を表示
    Excel.Range w_rgn = this.sheet.Cells;
    try
    {
    w_rgn[1, 1].value = "項目名1";
    w_rgn[1, 2].value = "項目名2";
    w_rgn[1, 3].value = "項目名3";
    w_rgn[1, 4].value = "項目名4";
    w_rgn[1, 5].value = "項目名5";

    int cell_row = 2;
    // DataGridViewのソースリストをループ
    foreach (dgvKoumokuLst d in DgvKoumokuLst)
    {
    w_rgn[cell_row, 1].value = d.koumoku1;
    w_rgn[cell_row, 1].EntireColumn.AutoFit();
    w_rgn[cell_row, 2].value = d.koumoku2;
    w_rgn[cell_row, 2].EntireColumn.AutoFit();
    w_rgn[cell_row, 3].value = d.koumoku3;
    w_rgn[cell_row, 3].EntireColumn.AutoFit();
    w_rgn[cell_row, 4].value = d.koumoku4;
    w_rgn[cell_row, 4].EntireColumn.AutoFit();
    w_rgn[cell_row, 5].value = d.koumoku5;
    w_rgn[cell_row, 5].EntireColumn.AutoFit();
    cell_row++;

    }
    }
    finally
    {
    // Excelのオブジェクト開放する
    Marshal.ReleaseComObject(w_rgn);
    w_rgn = null;
    }

    // シートを選択
    ExcelVisibleToggle(xls, true); // Excel表示

    // Sheet解放
    Marshal.ReleaseComObject(sheet);
    // Book解放
    //xlBook.Close();
    Marshal.ReleaseComObject(book);

    // Excelアプリケーションを解放
    //xlApp.Quit();
    Marshal.ReleaseComObject(xls);

    }


    // ClosedXML使用
    private void btnClosedXML_Click(object sender, EventArgs e)
    {

    // エクセルオープン
    var workbook = new XLWorkbook();
    var worksheet = workbook.Worksheets.Add("CSV一覧");
    worksheet.Cell(1,1).Value = "Hello world";

    // 項目名を表示
    worksheet.Cell(1, 1).Value = "項目1";
    worksheet.Cell(1, 2).Value = "項目2";
    worksheet.Cell(1, 3).Value = "項目3";
    worksheet.Cell(1, 4).Value = "項目4";
    worksheet.Cell(1, 5).Value = "項目5";

    int cell_row = 2;
    // DataGridViewのソースリストをループ
    foreach (dgvKoumokuLst d in DgvKoumokuLst)
    {
    worksheet.Cell(cell_row, 1).Value = d.koumoku1;
    worksheet.Column("A").AdjustToContents();
    worksheet.Cell(cell_row, 2).Value = d.koumoku2;
    worksheet.Column("B").AdjustToContents();
    worksheet.Cell(cell_row, 3).Value = d.koumoku3;
    worksheet.Column("C").AdjustToContents();
    worksheet.Cell(cell_row, 4).Value = d.koumoku4;
    worksheet.Column("D").AdjustToContents();
    worksheet.Cell(cell_row, 5).Value = d.koumoku5;
    worksheet.Column("E").AdjustToContents();

    cell_row++;

    }

    // workbook.SaveAs(@"C:\Temp\test1.xlsx");

    // CmnMsgBox.Show("出力完了", 2);

    // 作成したエクセルファイルを開いて表示したい

    }
親記事 /過去ログ159より / 関連記事表示
削除チェック/

■92206  Re[1]: エクセルファイルを作成して表示する方法について
□投稿者/ 魔界の仮面弁士 -(2019/09/01(Sun) 17:44:36)
    No92205 (河童 さん) に返信
    > 2.ClosedXMLで作成
    > ClosedXMLでエクセルを作成して保存はできるのですが、今回は保存までは必要なく
    > エクセルにデータを入力して、エクセルを開いた状態のままにしておきたいです。
    > ClosedXMLで作成したエクセルを開いたままにする方法はありますか?

    ClosedXML の場合、SaveAs メソッドが Stream への保存をサポートしているので、この辺と組み合わせてみるとか。
    http://atata.sakura.ne.jp/net/chap29.html

    あるいは、シート内容を表示することだけが目的なら、ReoGrid を使うという手もあります。
    オンメモリでのワークブック生成が可能ですし、それを表示するためのコントロールも用意されています。
    https://reogrid.net/jp/document/


    > 1.Interop.Excelで作成
    個人的には積極的にお奨めはしていませんが、Excel の機能を十分に呼び出せる
    強力な方法ではありますので、用途に応じて使い分けるものかなと思います。


    > インストールされているエクセルのバージョンがExcel2007、2010、2019とばらばらなことと、
    バージョンによって、void 戻り値なメソッドが object 戻り値なメソッドに変化したり、
    省略可能な引数が追加されたりといった拡張が行われることがあります。

    新しく追加した機能を使わないようにすれば、VBA においては大きな差にはなりませんし、
    COM レベルにおいても、ディスパッチ ID と不可視属性の組み合わせが使われることで
    ある程度の互換性が保たれてはいるのですが、それでも、上位バージョンのライブラリを使って
    開発したアプリケーションを下位バージョン環境で動作させようとした場合には、
    問題が生じる可能性があります。

    また、ストアアプリ版と Windows Installer 版とでの動作の違いや、Office 365 での
    更新サイクルの短期化などがあるため、バージョン違いを正確に考慮して
    コーディングするのは、ますます難しくなってきています。


    > プロセスが残りやすいのであまり使用しない方がいいとネット情報にありました。
    解放手続きの話という事で、このあたりも。
    https://social.msdn.microsoft.com/Forums/ja-JP/0d9c6273-bade-4f6a-a0de-5adb748d15eb/office?forum=officesupportteamja


    たとえば、COM オブジェクトを引数に渡すタイプのメソッドを呼び出す場合、
    参照設定なしで dynamic や object を渡した場合と、
    PIA を経由で明示的な Excel の型として渡した場合と、
    動的生成された IA の型を通じて渡した場合とで、参照カウントの増数が異なるらしく、
    ReleaseComObject 時の戻り値の値が変化したこともあります。


    > // Excelを非表示:レスポンス向上
    アプリケーションを非表示にすることがレスポンス向上に繋がるかは、実はケースバイケースです。
    シートを非表示にしたり、描画抑制するなどして操作する方法であれば、レスポンス向上になることが多いのですが、
    Application.Visible = false; については、向上する場合もあれば、むしろ低下することもあるのでご注意ください。

    本体が非表示となった場合、Excel.exe がバックグラウンド処理に回されることから、実行環境によっては、
    処理速度が半分未満に低速化することがあります。OS 設定や プロセッサ構成などの要因によって、
    謙虚に反映されてしまう場合もあれば、問題無い場合もありますので、実際の環境で試した上で判断が必要です。


    > this.book = xls.Workbooks.Add();
    books = xls.Workbooks;
    book = books.Add();
    とします。Marshal.IsComObject(books) が true である場合、
    book のみならず books も解放対象となります。


    > this.sheet = (Microsoft.Office.Interop.Excel.Worksheet)this.book.Sheets["sheet1"];
    こちらも同様で、
    // sheets = book.Worksheets;
    sheets = book.Sheets;
    sheet = (Microsoft.Office.Interop.Excel.Worksheet)sheets["sheet1"];
    としたうえで、Marshal.IsComObject(sheets) が true なら、sheets も解放対象です。


    > w_rgn[1, 1].value = "項目名1";
    Excel.Range w_rgn11 = w_rgn[1, 1];
    w_rgn11.Value = "項目名1";
    if (Marshal.IsComObject(w_rgn11)) {
     Marshal.ReleaseComObject(w_rgn11);
    }

    なお、C# のバージョンが古い場合には、
     w_rgn11.set_Value(Type.Missing, "項目名1");
    の形式が求められることがあります。今回は当てはまりませんけれども。


    > w_rgn[cell_row, 1].EntireColumn.AutoFit();
    これも、EntireColumn が返すオブジェクトを変数に受けておくべきです。

    rngEntireColumn.AutoFit();
    if (Marshal.IsComObject(rngEntireColumn)) {
     Marshal.ReleaseComObject(rngEntireColumn);
    }


    個別の解放手続き面倒であれば、アプケーションドメインを別途立てて実行し、
    作業した AppDomain ごと Unload するという手もありますが、それはそれで面倒かも。
記事No.92205 のレス /過去ログ159より / 関連記事表示
削除チェック/

■92007  Re[8]: コンボボックスによる絞り込み
□投稿者/ WebSurfer -(2019/08/17(Sat) 10:43:48)
    No92005 (たかし さん) に返信

    > やはりVB.NETで「コンボボックスによる絞り込み」は出来ないか、
    > 少なくとも「途方もなく難しい」ということが分かりました。

    そんなことはなくて、No91999 に書いたように、

    (2) 事前に SQL Server から全ての情報を DataTable に読み取ってからそれを操作する

    という条件でよければ、DataTable から DataView を取得して、その RowFilter プロパ
    ティに条件を設定すればできます。

    それはともかく、No91989 No91990 No91999 No92001 と私からレスしていますが、それら
    に対するフィードバックは無しですか?

    読んだ・読まなかった、理解できた・できなかった、役に立った・立たなかったぐらいは
    フィードバックとして返してもらっても良いと思うのですけど。
記事No.91943 のレス /過去ログ160より / 関連記事表示
削除チェック/

■92630  Re[5]: Re: 別のアプリに対してモーダルとなるウィンドウの作成
□投稿者/ 魔界の仮面弁士 -(2019/10/11(Fri) 18:50:03)
    No92621 (HiHi さん) に返信
    > を見る限り、任意のアプリのHWNDは、32bitアプリから見ても64bitアプリから見ても同じ値であると理解しました。

    正の 32bit 値の範囲、
    &H0I〜&H7FFFFFFFI および
    &H0L〜&H7FFFFFFFL の範囲は気にしなくて良さそう。


    HWND 自体は、互換性の理由から利用可能なハンドル数が
    今でも 16bit 分(数万個)しかないようです。
    https://www.wdic.org/w/TECH/HWND
    https://cpplover.blogspot.com/2007/07/blog-post_19.html

    肝心な値の範囲については、負数もありえますが、実際のところ、
    Win32/Win64 とも、下位 32bit 分までが有効値のようです。
    https://docs.microsoft.com/ja-jp/windows/win32/winprog64/interprocess-communication


    Win32/Win64 間で、コマンドラインで受け渡す際には、手順によっては、
    上位ビットの部分を切り捨て(64→32)たり、符号拡張(32→64)する必要があるかも知れません。

    まぁ、INVALID_HANDLE_VALUE などであれば、New IntPtr(-1) で済ませられますし、
    さほど問題無いとは思いますが、IntPtr 自体はどういう動作を取るのか、一応実験。


    《x64 の場合》
    Dim P1 As New IntPtr(&H80000000L) '0x0000000080000000 扱い。ToInt64() 可能。ToInt32() は OverflowException。
    Dim P2 As New IntPtr(&H80000000I) '0xFFFFFFFF80000000 扱い。ToInt32() と ToInt64() の両方が使用可能。
    Dim P3 As New IntPtr(2147483648L) '0x0000000080000000 扱い。ToInt64() 可能。ToInt32() は OverflowException。
    Dim P4 As New IntPtr(-2147483648) '0xFFFFFFFF80000000 扱い。ToInt32() と ToInt64() の両方が使用可能。

    《x86 の場合》
    Dim P1 As New IntPtr(&H80000000L) 'OverflowException で生成できない。
    Dim P2 As New IntPtr(&H80000000I) '0x80000000 扱い。ToInt32() と ToInt64() の両方が使用可能。
    Dim P3 As New IntPtr(2147483648L) 'OverflowException で生成できない。
    Dim P4 As New IntPtr(-2147483648) '0x80000000 扱い。ToInt32() と ToInt64() の両方が使用可能。
記事No.92606 のレス /過去ログ160より / 関連記事表示
削除チェック/

■92680  Re[3]: C#とAccessのチェックボックスの連携について
□投稿者/ WebSurfer -(2019/10/19(Sat) 12:48:14)
    No92678 (テトリス さん) に返信

    Access データベースの特定のテーブルのレコード一覧を表示し、その中の Yes/No 型のフィー
    ルド(チェックボックスとして表示される)にチェックを入れたり外したりした結果を元の
    Access のテーブルに反映するといった Windows Forms アプリが作れれば良いと理解してレス
    します。

    なお、上のレスにも書きましたが、Windows Forms アプリと Access を両方立ち上げておいて、
    片方で更新すると他方で結果がリアルタイムで表示ということはできませんので注意してくだ
    さい。

    Windows Forms アプリの DataGridView にレコード一覧を表示するのですが、実行結果は以下
    のリンク先の画像のようになります。

    http://surferonwww.info/BlogEngine/image.axd?picture=2019%2f9%2fAccess.jpg

    上のアプリで使っているのは Microsoft が提供しているサンプル Northwind 2007.accdb の
    その中の Products テーブルで Discontinued フィールドが Yes/No 型です。

    チェックボックスにチェックを入れる/外すという操作の後、ツールバーのフロッピーディスク
    のアイコンをクリックすると、結果が Access のテーブルに反映されます。

    それで良いですか? ダメならこちらから提案できることはないので、この下のレスはスルー
    してください。



    まず ACE プロバイダを入手して開発マシンにインストールしてください。.accdb を扱うには
    必須です。

    詳しくは以下の記事を見てください。32/64-bit の違いに注意してください。そのあたりの注
    意点も以下の記事に書いてあります。

    Access 2007 の DB を利用するアプリ開発
    http://surferonwww.info/BlogEngine/post/2011/11/08/Development-of-application-which-uses-accdb-file-of-Access-2007.aspx

    アプリは Visual Studio のウィザードを使って作成します

    DB が SQL Server の場合ですが(Access の場合も同じことが可能です)、以下のチュートリ
    アル、

    10 行でズバリ !! 非接続型のデータ アクセス (ADO.NET) (C#)
    https://code.msdn.microsoft.com/windowsdesktop/10-ADONET-C-cbfe7688

    ・・・のように Visual Studio のデータソース構成ウィザードを利用して型付 DataSet +
    TableAdapter を作って、それを利用してアプリを作ると、以下のページの図のような構造の
    アプリが自動生成されます。

    Windows フォーム アプリケーションでのデータへの接続
    https://docs.microsoft.com/ja-jp/previous-versions/wxt2cwcc(v=vs.120)

    上に紹介したチュートリアルは 2 つのテーブルを階層更新するために少々複雑になっていま
    すが、単一テーブルですともっと簡単で、操作に慣れると上の画像のアプリなら 5 分もかか
    らず作れるはずです。自力では一行もコードを書く必要はありません。

    自力で一からコードを書く場合のような種々の問題に悩むことはなくなり、開発工数は激減
    するはずです。保守工数も減るはずです。お試しください。
記事No.92610 のレス /過去ログ160より / 関連記事表示
削除チェック/

■92683  Re[4]: C#とAccessのチェックボックスの連携について
□投稿者/ テトリス -(2019/10/19(Sat) 16:07:19)
    No92680 (WebSurfer さん) に返信
    > ■No92678 (テトリス さん) に返信
    >
    > Access データベースの特定のテーブルのレコード一覧を表示し、その中の Yes/No 型のフィー
    > ルド(チェックボックスとして表示される)にチェックを入れたり外したりした結果を元の
    > Access のテーブルに反映するといった Windows Forms アプリが作れれば良いと理解してレス
    > します。
    >
    > なお、上のレスにも書きましたが、Windows Forms アプリと Access を両方立ち上げておいて、
    > 片方で更新すると他方で結果がリアルタイムで表示ということはできませんので注意してくだ
    > さい。
    >
    > Windows Forms アプリの DataGridView にレコード一覧を表示するのですが、実行結果は以下
    > のリンク先の画像のようになります。
    >
    > http://surferonwww.info/BlogEngine/image.axd?picture=2019%2f9%2fAccess.jpg
    >
    > 上のアプリで使っているのは Microsoft が提供しているサンプル Northwind 2007.accdb の
    > その中の Products テーブルで Discontinued フィールドが Yes/No 型です。
    >
    > チェックボックスにチェックを入れる/外すという操作の後、ツールバーのフロッピーディスク
    > のアイコンをクリックすると、結果が Access のテーブルに反映されます。
    >
    > それで良いですか? ダメならこちらから提案できることはないので、この下のレスはスルー
    > してください。
    >
    >
    >
    > まず ACE プロバイダを入手して開発マシンにインストールしてください。.accdb を扱うには
    > 必須です。
    >
    > 詳しくは以下の記事を見てください。32/64-bit の違いに注意してください。そのあたりの注
    > 意点も以下の記事に書いてあります。
    >
    > Access 2007 の DB を利用するアプリ開発
    > http://surferonwww.info/BlogEngine/post/2011/11/08/Development-of-application-which-uses-accdb-file-of-Access-2007.aspx
    >
    > アプリは Visual Studio のウィザードを使って作成します
    >
    > DB が SQL Server の場合ですが(Access の場合も同じことが可能です)、以下のチュートリ
    > アル、
    >
    > 10 行でズバリ !! 非接続型のデータ アクセス (ADO.NET) (C#)
    > https://code.msdn.microsoft.com/windowsdesktop/10-ADONET-C-cbfe7688
    >
    > ・・・のように Visual Studio のデータソース構成ウィザードを利用して型付 DataSet +
    > TableAdapter を作って、それを利用してアプリを作ると、以下のページの図のような構造の
    > アプリが自動生成されます。
    >
    > Windows フォーム アプリケーションでのデータへの接続
    > https://docs.microsoft.com/ja-jp/previous-versions/wxt2cwcc(v=vs.120)
    >
    > 上に紹介したチュートリアルは 2 つのテーブルを階層更新するために少々複雑になっていま
    > すが、単一テーブルですともっと簡単で、操作に慣れると上の画像のアプリなら 5 分もかか
    > らず作れるはずです。自力では一行もコードを書く必要はありません。
    >
    > 自力で一からコードを書く場合のような種々の問題に悩むことはなくなり、開発工数は激減
    > するはずです。保守工数も減るはずです。お試しください。

    長文でのコメントありがとうございます。
    一点質問なのですが、dataGridviewではなくlistviewで同じような環境を作ることは可能でしょうか?
記事No.92610 のレス /過去ログ160より / 関連記事表示
削除チェック/

■92727  外部機器制御
□投稿者/ じょこびっち -(2019/10/25(Fri) 21:43:15)

    分類:[C#] 

    2019/10/26(Sat) 08:42:41 編集(投稿者)
    2019/10/26(Sat) 08:42:35 編集(投稿者)

    オシロスコープの制御をしたいのですが参考になるサイトがKeysightくらいしか見つかりませんでした。
    Keysightのサイトでは接続機器のIDを取得する方法くらいしか記載がなく、
    測定したデータを取得してcsvなどに書き込むなどのもう少し踏み込んだ事が
    勉強したいのですが参考になるサイトや書籍があったら教えてください。
親記事 /過去ログ160より / 関連記事表示
削除チェック/

■93741  Re[2]: asp.netでpdf作成
□投稿者/ WebSurfer -(2020/01/23(Thu) 20:43:28)
    何を作っているかとの問いに答えないのはそういうポリシーでもあるのかな?
記事No.93732 のレス /過去ログ162より / 関連記事表示
削除チェック/

■94100  Re[7]: excelと画面の表示スケール
□投稿者/ だんぼ -(2020/03/12(Thu) 14:04:22)
    No94097 (魔界の仮面弁士 さん) に返信
    > 環境を用意して検証実験する余裕が無いので、今はちょっと分からないです。
    > Excel のバージョンに依存している様子はありますか?
    Excel2007,Win10で差異はありませんでした。

    > Per-Monitor 設定の場合、ディスプレイモニタごとの設定にあわせて
    > 表示が変わる可能性がありますが、Excel の表示が起動元アプリの
    > manifest に依存しているのかどうかは把握していません。
    dpiAwareの値をtrue/PMにしてみたらアプリで立ち上げたexcelも普通に立ち上げたexcelも表示ボケしませんでした。
    とりあえずこれで検証してみようと思います。

    魔界の仮面弁士さん、ありがとうございました。
    また、何かありましたらよろしくお願いします。
記事No.94070 のレス / END /過去ログ163より / 関連記事表示
削除チェック/

次の20件>

<< 0 | 1 >>

ヒット件数が多いので過去ログ153〜179 までの検索結果 / 過去ログ0からさらに検索→

パスワード/

- Child Tree -