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

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

記事リスト ( )内の数字はレス数
UpDateVB.netにおける固定長出力方法(3) | NomalDataObjectの使いまわし(5) | NomalVB.NETからRDゲートウェイを利用したリモートデスクトップ接続(3) | NomalLIstview のDataSource(2) | NomalClassの作り方(2) | NomalOpenFileDialogの初期ファイル名の表示が変(1) | NomalVB.NETのVBA化(2) | Nomal改行のコード(7) | NomalGoogle翻訳の結果の取得(2) | NomalStopwatchクラスのElapsedMillisecondsの挙動(2) | Nomal.net Chartで二重ドーナツグラフの作り方(3) | Nomalexeをショートカットから起動した場合のエラー(2) | Nomalデスクトップ と Desktop(6) | Nomalデザイナのプロパティウィンドウで静的プロパティを選択したい(3) | NomalPHPでシリアライズした、データをデシリアライズしたい(4) | Nomal二次元配列 インデックスが配列の境界外(2) | NomalVB.netで作成したexeのNgenによる弊害(1) | NomalDrawBezierの使い方について(7) | Nomalメジャーバージョンの異なるLog4netライブラリを参照したい(4) | NomalVB6→2005変換時のDeclare宣言のマーシャリング属性(8) | NomalGROUPBOXの複製について(vb.net)(1) | NomalActiveReports 3.0からActiveReports 7.0へのァイルコンバータについて(4) | NomalAccess OLEでExecuteNonQuery(3) | NomalKeyDownでの右コントロールキーイベント(2) | NomalExcel複数シートの印刷順序(3) | NomalWMPへno(3) | NomalDataGridViewの行番号(7) | Nomalapp.config定義によるネットワークトレースログの世代管理(2) | Nomalrelease/debugのどちらで作成されたものかを判断する方法(2) | NomalC#コンソールアプリでタイピング練習ソフト作成(3) | Nomal自分自身を呼び出すのはOKですか(1) | NomalWebBrowser Control foreachで値が消える(2) | NomalDeclare宣言するdllと参照追加をするdllの区別(4) | NomalTaskクラスを.NET Framework 2.0で実現させる方法(2) | NomalVS2017で作成されたDLLをVS2005で作成されたAPで使用する方法(4) | NomalWebBrowser Controlを使って、任意の値を取得(5) | NomalEditボックスに簡体字をセットする方法(2) | NomalList型でエラーが起きてしまい・・・(1) | Nomalフォルダ内の全ての容量を取得したい(4) | NomalWebClientが上手く動かない(2) | Nomal共変性と反変性ってこういうこと?(4) | Nomalモードレスフォーム Warning IDE0067を回避したい(7) | NomalLINQの拡張メソッドの定義(1) | Nomalこんな演算子初めて見ました。(5) | Nomalプロセスからウインドウを取得(4) | Nomalフォーム外のカーソルの変更(2) | NomalLINQのメソッド構文の書き方(3) | NomalVB.NETでCSVを読み込む際にSQL文を使いたい(3) | NomalRichTextBoxで入力文字の自動折り返しを止めたい(2) | NomalRichTextBoxで入力文字の自動折り返しを止めたい(5) | Nomalラムダ式の勉強中(2) | NomalWebClientで、短期間にDownloadStringAsyncを実行したい(2) | Nomalvb.net+SQLiteで複数データベースファイルへのトランザクション方法(3) | NomalNewの使い方間違ってますか?(4) | Nomalジェネリック型インターフェースを使った変数を扱いたい(3) | NomalC#をVBに変換(2) | NomalProcess.WaitForExitで正常に動作しない?(3) | NomalCatch時のex.StackTraceの情報(3) | Nomalユーザーコントロール内のテキストボックスのmodifiedプロパティ(4) | NomalPictureBox.Locationのキャンセル(3) | NomalJOIN操作の構文エラー(4) | NomalVisualStudioでマクロ(3) | NomalVisualStudioでExcelのVSTO開発(3) | NomalOracleDataAccess を参照したプログラムでデバッグモードが機能しなくなる(3) | NomalIE11では表示されるが、.netのWebBrowserでは、表示されないHPを表示する方法(7) | NomalマウスのないOSでマウスカーソルの表示(2) | NomalRDP接続でのネットワーク帯域制限(0) | NomalFILE.COPYでIOExceptionエラーが出る(11) | NomalToolStripMenuItemにShortcutKeysを指定した際の、元のコントロールを取得する方法(2) | Nomal動的にプロパティや変数の値の取得(4) | NomalVB6 ほかのアプリケーションを起動し そのアプリケーションは終了させる方法(4) | NomalMouseEventArgsのカレント座標(2) | Nomalリッチテキストボックスでの字間の調整(2) | NomalDrawImage でメモリ不足エラー(3) | Nomal必須コンポーネントの一覧に追加したい(0) | NomalCode128でバーコードが読み取れない(8) | NomalあるWindows10PCでビルドしたEXEがW8.1以下で実行エラー(5) | NomalApp.configのMy.Application.Log設定で使用できない属性が出る(0) | NomalVC++ → VB.Netに変換時に文法エラー(2) | Nomalvb2010を使用したmicrosoft Wordの任意の行の削除(0) | NomalVb.netからAccessへの接続について(3) | NomalSQL-Server Compact 4.0が表示されない(2) | Nomalバーコードの数字を非表示にしたい(2) | Nomal令和の日付への対応(3) | Nomalスクロールバーが出た時に高さを変えたい(4) | Nomal自作したアプリの発行元を明記したい(2) | NomalHTTP 417エラーを発生させるためのIIS設定はどうすればよいか(3) | Nomal起動ディスプレイの指定方法について(6) | NomalSystem.Threading.Thread.Sleep()と変数(2) | NomalVisual Studio DataTableの値のアクセスの仕方(2) | NomalDatagridviewのクリア(2) | NomalDataGridView 行の背景色の設定(2) | NomalListBoxにデータが表示されない(6) | NomalPIctureBox同士を論理合成したい(3) | NomalDrawString前のFillRectangle有無により文字の太さが違う理由について教えて下さい(3) | Nomalポルトガル語の登録(5) | NomalnumericUpDwonコントロールのvalue(2) | Nomalデータセット定義ファイルからDataTable(3) | NomalDataTableの構造が同じか調べるメソッド(2) | Nomalネットの画像の複数枚を重ね合わせたい(3) |



■記事リスト / ▼下のスレッド
■34214 / 親記事)  自作したアプリの発行元を明記したい
□投稿者/ み 一般人(7回)-(2019/04/11(Thu) 01:46:00)
  • アイコン環境/言語:[C# vs2012 ,NET3.4] 
    分類:[.NET] 

    C#でアプルケーションを作成しています。

    アプリの右クリックで管理者の実行を選択すると「この不明な発行元からのアプリがデバイスに変更を加えることを許可しますか 発行元:不明」
    のメッセージが表示されます。

    本来は画面の色も黄色から青のメッセージ画面になり
    「このアプリがデバイスの変更を加えることを許可しますか
    発行元:〇〇〇」と表示させたい。

    特に開発元;〇〇〇と表示したい
    この発行元を取得できるサイト、手順などおえしてもらますでしょうか
    また料金等が発生するとしましたらおすすめのサイト等もご教授下さい。
違反を報告
引用返信

▽[全レス2件(ResNo.1-2 表示)]
■34215 / ResNo.1)  Re[1]: 自作したアプリの発行元を明記したい
□投稿者/ Azulean 大御所(506回)-(2019/04/11(Thu) 06:09:32)
  • アイコン2019/04/11(Thu) 06:16:31 編集(投稿者)

    No34214に返信(みさんの記事)
    > 本来は画面の色も黄色から青のメッセージ画面になり
    > 「このアプリがデバイスの変更を加えることを許可しますか
    > 発行元:〇〇〇」と表示させたい。
    >
    > 特に開発元;〇〇〇と表示したい
    > この発行元を取得できるサイト、手順などおえしてもらますでしょうか
    > また料金等が発生するとしましたらおすすめのサイト等もご教授下さい。

    これはコードサインニング証明書を用いてデジタル署名を付与しなければなりません。
    また、任意の名前で取得できるわけではなく、個人の本名か、会社・組織名になります。

    価格などは以下のページが参考になると思われます。
    https://www.nda.co.jp/memo/codesigning/index.html


    ----
    ClickOnce を使っている場合は別途リスクがあるかもしれません。
    使っていない場合は大丈夫な気はする。
違反を報告
引用返信
■34216 / ResNo.2)  Re[2]: 自作したアプリの発行元を明記したい
□投稿者/ み 一般人(8回)-(2019/04/11(Thu) 10:57:54)
  • アイコンAzuleanさん返信ありがとうございます。
    参考にさせていただきます。

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

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



■記事リスト / ▼下のスレッド / ▲上のスレッド
■34205 / 親記事)  HTTP 417エラーを発生させるためのIIS設定はどうすればよいか
□投稿者/ ぺんたごん 一般人(31回)-(2019/04/02(Tue) 13:26:50)
  • アイコン環境/言語:[IIS 7.5] 
    分類:[ASP.NET] 

    こんにちは。

    今回、ASP.NET WebAPI製のRESTに対し
    .NET製アプリからPOSTするプログラムを書いています。

    ある特定の客先環境でだけ417エラーが発生するため
    社内で検証するために同じエラーが出る状況を作りたいのですが、
    IISか何かをどのように設定すればよいのか
    皆目検討が付きません。

    ググってもクライアント側の対処法しか出てこず、
    それを検証するためにあえてエラーが発生する状態を
    作ろうとする人がいないようで…

    IISの要求フィルタのヘッダーあたりかなと思いましたが、
    Expectヘッダをサイズ制限1で追加したらなぜか404になってしまい、
    クライアント側がExpect100Continue=falseしても通らなくなってしまいました。

    どうか何卒お助けください…
違反を報告
引用返信

▽[全レス3件(ResNo.1-3 表示)]
■34206 / ResNo.1)  Re[1]: HTTP 417エラーを発生させるためのIIS設定はどうすればよいか
□投稿者/ shu 大御所(486回)-(2019/04/02(Tue) 14:51:11)
  • アイコンNo34205に返信(ぺんたごんさんの記事)
    >
    > ある特定の客先環境でだけ417エラーが発生するため
    > 社内で検証するために同じエラーが出る状況を作りたいのですが、

    プロキシサーバー通っている場合に発生する可能性があります。
違反を報告
引用返信
■34209 / ResNo.2)  Re[2]: HTTP 417エラーを発生させるためのIIS設定はどうすればよいか
□投稿者/ ぺんたごん 一般人(32回)-(2019/04/02(Tue) 17:43:51)
  • アイコンNo34206に返信(shuさんの記事)
    > ■No34205に返信(ぺんたごんさんの記事)
    >>
    >>ある特定の客先環境でだけ417エラーが発生するため
    >>社内で検証するために同じエラーが出る状況を作りたいのですが、
    >
    > プロキシサーバー通っている場合に発生する可能性があります。

    ありがとうございます。
    Expectを受け付けないプロキシサーバを構築できないか
    いろいろ探ってみます。

    進展が有りましたらまた追記します。
違反を報告
引用返信
■34213 / ResNo.3)  Re[3]: HTTP 417エラーを発生させるためのIIS設定はどうすればよいか
□投稿者/ ぺんたごん 一般人(33回)-(2019/04/08(Mon) 20:08:32)
  • アイコンNo34209に返信(ぺんたごんさんの記事)
    > ■No34206に返信(shuさんの記事)
    >>■No34205に返信(ぺんたごんさんの記事)
    > >>
    > >>ある特定の客先環境でだけ417エラーが発生するため
    > >>社内で検証するために同じエラーが出る状況を作りたいのですが、
    >>
    >>プロキシサーバー通っている場合に発生する可能性があります。
    >
    > ありがとうございます。
    > Expectを受け付けないプロキシサーバを構築できないか
    > いろいろ探ってみます。
    >
    > 進展が有りましたらまた追記します。

    Squid 2.7 のWin用ビルド済バイナリを見つけて、
    無事 HTTP 417が発生するプロキシ環境を構築できました。
    新しいバージョンではExpectヘッダに対応しちゃっていたので
    あえて古いバージョンを探すのが大変でしたがなんとか見つけられました。

    ありがとうございました。
解決み!
違反を報告
引用返信

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



■記事リスト / ▼下のスレッド / ▲上のスレッド
■34203 / 親記事)  起動ディスプレイの指定方法について
□投稿者/ masa 一般人(1回)-(2019/04/02(Tue) 09:51:32)
  • アイコン環境/言語:[C#、.NET Framework 4.5.2] 
    分類:[.NET] 

    いつもお世話になっております。

    現在、C#のWidowsアプリを作成しており、起動したPCがマルチウィンドウの場合、必ず「メインウィンドウ(PrimaryWindow)」に起動するように制御したいのですが、どうやればよいのかわかりません。

    ウィンドウ(Form)の場合には、ウィンドウの一覧を取得し、PrimaryWindowの座標を取得し、ウィンドウ座標をその位置に移動するという方法で制御できました。
    foreach (Screen s in Screen.AllScreens)
    {
    if (s.Primary)
    {
    this.StartPosition = FormStartPosition.Manual;
    this.Location = s.Bounds.Location;
    break;
    }
    }

    今回困っているのが、MessageBoxの起動位置です。
    Program.csにて処理してメッセージを表示しているのですが、MessageBoxの起動位置をメインウィンドウに指定する方法がわかりません。
    MessageBoxは「現在アクティブなウィンドウ」に起動することは分かっているのですが、このアクティブなウィンドウをメインウィンドウへ変更するようなことは可能なのでしょうか?

    お手数おかけしますがどなたかご教授下さい。
違反を報告
引用返信

▽[全レス6件(ResNo.2-6 表示)]
■34207 / ResNo.2)  Re[2]: 起動ディスプレイの指定方法について
□投稿者/ masa 一般人(3回)-(2019/04/02(Tue) 15:27:47)
  • アイコン2019/04/02(Tue) 15:30:13 編集(投稿者)
    2019/04/02(Tue) 15:28:41 編集(投稿者)
    2019/04/02(Tue) 15:28:36 編集(投稿者)

    No34204に返信(魔界の仮面弁士さんの記事)

    魔界の仮面弁士さんご返答ありがとうございます。

    FormがPrimaryWindowに変更する例は元々Primary「ではない」ウィンドウへ移動する例でしたのでこのような処理になっていて、それをそのまま載せたのでループして検索する処理になっています。

    画面座標も、Formがフルスクリーンのアプリケーションでしたので座標はPrimaryWindowの範囲内ならどこでもよかったためこのような処理になっています。

    今回質問したかった内容とは関係なかった(Formの移動の仕方は分かってますという意味で載せただけ)ので、そのまま載せました。
    説明なくスミマセンでした。


    > MessageBox.Show の第一引数(IWin32Window 型)に、
    > PrimaryScreen 上にあるウィンドウ(Form や NativeWindow など)を
    > 渡すことで、プライマリ側の画面に表示されると思います。

    ということですが、今回困っているのは「Program.cs」での処理です。
    ですのでFormが表示される前の話で、第一引数に何も指定できない場合の話です。
     ※起動している他ウィンドウも何もない状態

    「第一引数に何も渡さない=現在アクティブなウィンドウに起動」なので、
    この状態で、どのように制御すればいいのか困っていての質問です。
違反を報告
引用返信
■34208 / ResNo.3)  Re[3]: 起動ディスプレイの指定方法について
□投稿者/ 魔界の仮面弁士 大御所(1221回)-(2019/04/02(Tue) 15:52:44)
  • アイコンNo34207に返信(masaさんの記事)
    > ということですが、今回困っているのは「Program.cs」での処理です。
    > ですのでFormが表示される前の話で、第一引数に何も指定できない場合の話です。

    Program.cs でも一緒ですよ。

    非表示でも構わないので、ダミーウィンドウを PrimaryScreen に配置して
    それを第一引数に指定するか、もしくはフックして SetWindowPos するかのいずれかです。
違反を報告
引用返信
■34210 / ResNo.4)  Re[4]: 起動ディスプレイの指定方法について
□投稿者/ masa 一般人(4回)-(2019/04/02(Tue) 18:39:11)
  • アイコンNo34208に返信(魔界の仮面弁士さんの記事)

    ご返答ありがとうございます。

    なるほど、ダミーのウィンドウを作成してみればよいのですね。
    早速、newしただけの空FormにPrimaryScreenのLocationを指定し、
    そのFormをMessegeBoxの第一引数に渡したところ、期待する動作をしました。

    Form form = new Form();
    form.Location = Screen.PrimaryScreen.Bounds.Location;
    MessageBox.Show(form, "test");


    こういうことで合っていますでしょうか?
違反を報告
引用返信
■34211 / ResNo.5)  Re[5]: 起動ディスプレイの指定方法について
□投稿者/ 魔界の仮面弁士 大御所(1222回)-(2019/04/02(Tue) 19:35:13)
  • アイコンNo34210に返信(masaさんの記事)
    > 早速、newしただけの空FormにPrimaryScreenのLocationを指定し、
    > そのFormをMessegeBoxの第一引数に渡したところ、期待する動作をしました。

    そんな感じで OK です。
    作成したダミーフォームは、不要になった時点で Dispose しておきましょう。


    API でフックして移動させるサンプルもありましたので、紹介しておきます。
    MessageBox の位置をピクセル単位で指定したい場合はこれで。
    https://www.ipentec.com/document/csharp-show-message-box-in-center-of-owner-window
違反を報告
引用返信
■34212 / ResNo.6)  Re[6]: 起動ディスプレイの指定方法について
□投稿者/ masa 一般人(5回)-(2019/04/03(Wed) 08:39:25)
  • アイコンNo34211に返信(魔界の仮面弁士さんの記事)

    ご教授ありがとうございました。

    APIでフックして移動させるサンプルも拝見してみます。
    これにて解決済みとします。

    ありがとうございました。
解決み!
違反を報告
引用返信

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



■記事リスト / ▼下のスレッド / ▲上のスレッド
■34200 / 親記事)  System.Threading.Thread.Sleep()と変数
□投稿者/ けい 一般人(20回)-(2019/03/31(Sun) 18:32:33)
  • アイコン環境/言語:[Windows10Pro、VB.NET、.NET Framework4.6.1] 
    分類:[.NET] 

    お世話になります。

    フォーム(frmTest)をLoadしてN秒後に自動的に閉じるコードを書いています。

    コードは以下の通りです。

    Private Sub frmTest_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    Timer1.Start()
    End Sub

    Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
    Dim intSleepTime As Integer=N * 1000
    System.Threading.Thread.Sleep(intSleepTime)・・・*
    Timer1.Stop()
    Me.Close()
    End Sub

    これだと、例えばN=3秒後を指定しても、1秒も経たないまま一瞬で閉じてしまいます。

    上記の*の部分を、
    System.Threading.Thread.Sleep(3000)とすると、
    3秒後にきちんと閉じます。

    また、
    If N=3 Then
    System.Threading.Thread.Sleep(3000)
    End if

    のようにIf文にすると、うまくいきません。

    Select Case文でもだめでした。

    変数intSleepTimeをLong型にしても、
    Application.DoEvents()をつけても、
    結果は同じでした。

    Nは自由に設定できるようにしたいのですが、
    その場合は変数にしなければなりません。

    こういう仕様なのか、ご教示いただけましたら幸いです。

    どうぞよろしくお願いします。

違反を報告
引用返信

▽[全レス2件(ResNo.1-2 表示)]
■34201 / ResNo.1)  Re[1]: System.Threading.Thread.Sleep()と変数
□投稿者/ Hongliang 大御所(555回)-(2019/03/31(Sun) 18:53:07)
  • アイコンそのNというのはどこで宣言してどこで初期化されているのでしょうか。
    単にNが0なだけではないかという疑いがあります。
    ブレークポイントをSleepの行に設置してブレークさせ、その時のNの値を確認してみて下さい。

    そもそも、タイマを使うのであればThread.Sleepを使う意味はありません。
    (というか、GUIプログラムにおいてメインスレッドでThread.Sleepを使ってはいけません)
    TimerのIntervalを3000ミリ秒とかに設定してからTimerをStartさせれば、
    Tickイベントハンドラ内ではそのままCloseするようにするだけで十分でしょう。
違反を報告
引用返信
■34202 / ResNo.2)  Re[2]: System.Threading.Thread.Sleep()と変数
□投稿者/ けい 一般人(21回)-(2019/04/01(Mon) 16:06:32)
  • アイコンNo34201に返信(Hongliangさんの記事)

    ありがとうございます。

    Nに関しましては質問文を簡単にするためにこのような記述になりました。
    実際には、モジュールで、Public変数宣言しておりました。


    > そもそも、タイマを使うのであればThread.Sleepを使う意味はありません。
    > (というか、GUIプログラムにおいてメインスレッドでThread.Sleepを使ってはいけません)

    そうなのですね。

    > TimerのIntervalを3000ミリ秒とかに設定してからTimerをStartさせれば、
    > Tickイベントハンドラ内ではそのままCloseするようにするだけで十分でしょう。

    Sleepを中止。

    フォームロード時に、Interval=N*1000、Timerスタート。
    TickイベントでTimerストップ、クローズ。

    で、できました。

    ありがとうございました。
解決み!
違反を報告
引用返信

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



■記事リスト / ▲上のスレッド
■34164 / 親記事)  Visual Studio DataTableの値のアクセスの仕方
□投稿者/ メンバー 一般人(1回)-(2019/02/26(Tue) 17:39:27)
  • アイコン環境/言語:[c#] 
    分類:[.NET] 

    Visual Studio2015のウォッチウィンドウでDataTableの値を探しています。
    
    DataSet ds = new DataSet();
    DataTable dt = new DataTable();
    
    // 5列定義します。
    dt.Columns.Add("A");
    dt.Columns.Add("B");
    dt.Columns.Add("C");
    dt.Columns.Add("D");
    dt.Columns.Add("E");
    
    // 4行追加します。
    for (int i = 0; i < 4; i++)
    {
        DataRow row = dt.NewRow();
        row["A"] = i;
        dt.Rows.Add(row);
    }
    
    // DataSetにdtを追加します。
    ds.Tables.Add(dt);
    
    dt.TableName = "Table1";
    
    Console.WriteLine(ds.Tables["Table1"].Rows[0]["A"].ToString());
    Console.WriteLine(ds.Tables["Table1"].Rows[1][0].ToString());
    Console.WriteLine(ds.Tables["Table1"].Rows[2].ItemArray[0].ToString());
    DataRow row2 = ds.Tables["Table1"].Rows[3];
    Console.WriteLine(row2["A"].ToString());
    
    Rowsオブジェクトの中をみてもRowsオブジェクト直下にItemArrayも表示されていません。
    わからないのが、なぜRows[0]["A"]、Rows[1][0]、Rows[2].ItemArray[0]で値にアクセスできるんでしょうか?
    
    

違反を報告
引用返信

▽[全レス2件(ResNo.1-2 表示)]
■34165 / ResNo.1)  Re[1]: Visual Studio DataTableの値のアクセスの仕方
□投稿者/ 魔界の仮面弁士 大御所(1205回)-(2019/02/26(Tue) 18:21:20)
  • アイコン2019/02/26(Tue) 22:10:07 編集(投稿者)

    No34164に返信(メンバーさんの記事)
    > 環境/言語:[c#] 

    誤: c#
    正: C#


    細かいことですが、日本工業規格 JIS X 3015 において、
    『C#は,LATIN CAPITAL LETTER C (U+0043)の次に NUMBER SIGN # (U+0023)を書く。』
    と明記されていますので、一応指摘まで。



    > Visual Studio2015のウォッチウィンドウでDataTableの値を探しています。

    ウォッチウィンドウやローカルウィンドウで、
    変数 ds や dt を表示させているという意味でしょうか。

    一時停止中に、ウォッチウィンドウの 虫眼鏡 アイコンをクリックすれば、
    DataTable の内容をグリッド表示できますね。


    > Rowsオブジェクトの中をみてもRowsオブジェクト直下にItemArrayも表示されていません。

    Rows プロパティが返すオブジェクトは、「DataRow クラス」のインスタンスではなく、
    DataRow のコレクションにあたる「DataRowCollection クラス」のインスタンスだからです。


    DataTableCollection tables = ds.Tables;
    DataTable table1 = tables["Table1"];
    DataRowCollection rows = table1.Rows;
    DataRow row0 = rows[0];
    object[] items = row0.ItemArray;
    dynamic data1 = row0["A"];
    dynamic data2 = items[0];



    > Console.WriteLine(ds.Tables["Table1"].Rows[0]["A"].ToString());

    折角 DataTable 型の変数 dt を保持しているのですから、
     Console.WriteLine(dt.Rows[0]["A"]);
    のようにした方が短く書けますよ。



    > DataSet ds = new DataSet();
    > DataTable dt = new DataTable();
    > dt.Columns.Add("A");
    >   :
    > ds.Tables.Add(dt);
    > dt.TableName = "Table1";

    上記の処理は、
     DataSet ds = new DataSet();
     DataTable dt = ds.Tables.Add("Table1");
     dt.Columns.Add("A");
       :
    のように短く書けます。


    このとき、「dt.Columns.Add("A");」という処理は
    string 型の列を追加することを意味しています。

    ※「dt.Columns.Add("A", typeof(string));」と同義。

    ですから、
    > row["A"] = i;
    のように、int 型の値を代入するのではなく、
     row["A"] = i.ToString();
    のように、string 型の値を代入することが望ましいです。

    もしも int 値を保存するための列なのであれば、
     dt.Columns.Add("A", typeof(int));
    としておきましょう。


    > // 4行追加します。
    追加し終わったら
     ds.AccesptChanges();
    を呼んでおくと良いでしょう。

    データテーブルの各行は、
     「追加された行」「未編集の行」
     「編集済み行」「削除された行」
    といった状態を管理しているものだからです。


    // 「追加された行」を確定して「未編集の行」にする
    dt.AcceptChanges();

    // 値が 1 から "100" へと編集された
    dt.Rows[0]["A"] = "100";

    // 現在の値 "100" を出力
    Console.WriteLine(dt.Rows[0]["A"]);

    // 変更前の値 1 が出力される
    Console.WriteLine(dt.Rows[0]["A", DataRowVersion.Original]);
違反を報告
引用返信
■34199 / ResNo.2)  Re[1]: Visual Studio DataTableの値のアクセスの仕方
□投稿者/ shu 大御所(485回)-(2019/03/30(Sat) 07:21:18)
  • アイコンNo34164に返信(メンバーさんの記事)
    >
    > Rowsオブジェクトの中をみてもRowsオブジェクト直下にItemArrayも表示されていません。
    > わからないのが、なぜRows[0]["A"]、Rows[1][0]、Rows[2].ItemArray[0]で値にアクセスできるんでしょうか?
    >
    RowsはDataRowの集まりであるのでRowsがItemArrayを持っているわけではありません。
    Rows[0]とするとDataTableの1行目のDataRowを表すのでこのように値を取得することが出来ます。
    Rows[0]["A"]
    と考えるのではなく
    DataRow row = rows[0];
    ・・・ row["A"] ・・・;
    と考えれば分かりやすいかと思います。



違反を報告
引用返信

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






Mode/  Pass/


- Child Tree -

2020/12/02(Wed) 11:08:20 に作成されたキャッシュを表示しています。
生のデータを表示する | キャッシュを最新にする