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

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

記事リスト ( )内の数字はレス数
Nomal参照dllへの文字列引数をutf8で渡したい。(13) | NomalFILE.COPYでIOExceptionエラーが出る(11) | Nomalリストを別フォームに渡す方法(9) | Nomal例外発生した場合に変数をcatchに渡したい(9) | NomalCode128でバーコードが読み取れない(8) | Nomalモードレスフォーム Warning IDE0067を回避したい(7) | NomalIE11では表示されるが、.netのWebBrowserでは、表示されないHPを表示する方法(7) | Nomal数字だけで構成されてるCSVフィールドが自動的に数値として解釈される(7) | NomalフォームコントロールへのDataBindingsでプロパティが相互反映されない(7) | Nomal起動ディスプレイの指定方法について(6) | NomalListBoxにデータが表示されない(6) | Nomal文字列を8bit に戻してから UTF-8 に変換する方法(6) | NomalSQLServerテーブル内容をDataGridViewに表示するコードについて(6) | Nomal文字列構造体のListのソート(6) | NomalWebBrowser Controlを使って、任意の値を取得(5) | Nomalこんな演算子初めて見ました。(5) | NomalRichTextBoxで入力文字の自動折り返しを止めたい(5) | NomalあるWindows10PCでビルドしたEXEがW8.1以下で実行エラー(5) | Nomalポルトガル語の登録(5) | Nomaloo4oのAddTableをADOに移行したい(5) | NomalDeclare宣言するdllと参照追加をするdllの区別(4) | NomalVS2017で作成されたDLLをVS2005で作成されたAPで使用する方法(4) | Nomalフォルダ内の全ての容量を取得したい(4) | Nomal共変性と反変性ってこういうこと?(4) | Nomalプロセスからウインドウを取得(4) | NomalNewの使い方間違ってますか?(4) | Nomalユーザーコントロール内のテキストボックスのmodifiedプロパティ(4) | NomalJOIN操作の構文エラー(4) | Nomal動的にプロパティや変数の値の取得(4) | NomalVB6 ほかのアプリケーションを起動し そのアプリケーションは終了させる方法(4) | Nomalスクロールバーが出た時に高さを変えたい(4) | NomalDatagridViewの行高さ変更について(4) | NomalLINQのメソッド構文の書き方(3) | Nomalvb.net+SQLiteで複数データベースファイルへのトランザクション方法(3) | Nomalジェネリック型インターフェースを使った変数を扱いたい(3) | NomalProcess.WaitForExitで正常に動作しない?(3) | NomalPictureBox.Locationのキャンセル(3) | NomalCatch時のex.StackTraceの情報(3) | NomalVisualStudioでマクロ(3) | NomalOracleDataAccess を参照したプログラムでデバッグモードが機能しなくなる(3) | NomalVisualStudioでExcelのVSTO開発(3) | NomalVB.NETでCSVを読み込む際にSQL文を使いたい(3) | NomalDrawImage でメモリ不足エラー(3) | NomalVb.netからAccessへの接続について(3) | Nomal令和の日付への対応(3) | NomalHTTP 417エラーを発生させるためのIIS設定はどうすればよいか(3) | NomalDrawString前のFillRectangle有無により文字の太さが違う理由について教えて下さい(3) | NomalPIctureBox同士を論理合成したい(3) | Nomalデータセット定義ファイルからDataTable(3) | Nomalネットの画像の複数枚を重ね合わせたい(3) | NomalDataGridViewで検索をかける方法(3) | NomalDataGridViewの選択時の色を透明にしたい(3) | NomalWebBrowserでWebページからのメッセージ(3) | NomalASP.NETから呼ばれているかどうか判定する方法(3) | NomalCA2213の警告が消えません(3) | NomalC# 現在のコンテキスト内にxxxという文字は存在しませんと出ます(3) | NomalTaskクラスを.NET Framework 2.0で実現させる方法(2) | NomalWebBrowser Control foreachで値が消える(2) | NomalEditボックスに簡体字をセットする方法(2) | NomalWebClientが上手く動かない(2) | Nomalフォーム外のカーソルの変更(2) | Nomalラムダ式の勉強中(2) | NomalRichTextBoxで入力文字の自動折り返しを止めたい(2) | NomalC#をVBに変換(2) | NomalWebClientで、短期間にDownloadStringAsyncを実行したい(2) | NomalマウスのないOSでマウスカーソルの表示(2) | NomalToolStripMenuItemにShortcutKeysを指定した際の、元のコントロールを取得する方法(2) | NomalMouseEventArgsのカレント座標(2) | Nomalリッチテキストボックスでの字間の調整(2) | NomalVC++ → VB.Netに変換時に文法エラー(2) | NomalSQL-Server Compact 4.0が表示されない(2) | Nomalバーコードの数字を非表示にしたい(2) | Nomal自作したアプリの発行元を明記したい(2) | NomalSystem.Threading.Thread.Sleep()と変数(2) | NomalDataGridView 行の背景色の設定(2) | NomalDatagridviewのクリア(2) | NomalnumericUpDwonコントロールのvalue(2) | NomalVisual Studio DataTableの値のアクセスの仕方(2) | NomalDataTableの構造が同じか調べるメソッド(2) | NomalRejectChangesについて(2) | NomalPC機種によってスタートアップ画面が中央から左上にずれる、Fontがおかしくなる。(2) | Nomalタスクスケジュール登録時の例外メッセージ(2) | Nomal管理者モードでクリック(2) | NomalVB2017でのインストーラ作成時のエラーについて(2) | NomalMicrosoft Azure OCRのサンプルコード実行時エラー(2) | Nomalデータバインド時のDataGridViewのカスタムソート(2) | NomalObject型からDecimalへの変換(2) | Nomal擬似言語をVBのプログラミングに変換(2) | Nomalユーザーコントロールのプロパティが保存されない(2) | NomalWindows10(1803)からGetHostEntryでipv4が取得出来ない場合がある(2) | Nomal自分自身を呼び出すのはOKですか(1) | NomalList型でエラーが起きてしまい・・・(1) | NomalLINQの拡張メソッドの定義(1) | NomalWebRequest でメモリが解放されない(1) | NomalFunction プロシージャからの文字選択(1) | NomalRDP接続でのネットワーク帯域制限(0) | Nomal必須コンポーネントの一覧に追加したい(0) | NomalApp.configのMy.Application.Log設定で使用できない属性が出る(0) | Nomalvb2010を使用したmicrosoft Wordの任意の行の削除(0) | NomalWinFormsでWindows10のカメラアプリと連携したい(0) |



■記事リスト / ▼下のスレッド
■34402 / 親記事)  モードレスフォーム Warning IDE0067を回避したい
□投稿者/ katu 一般人(1回)-(2019/11/28(Thu) 15:04:01)
  • アイコン環境/言語:[VB.NET 2019] 
    分類:[.NET] 

    VisualBasic 2019 Warning IDE0067

    使用済のオブジェクトを破棄しろ、という警告でしょうが

    モードレスフォームの表示コードではUsingまたはTry文はなじまないと思います


    Dim f as New frmA
    f.Show(Me)
    とするとこの警告が出ます

    メインフォームから frmA を表示するものとして
    どこでフォームを宣言して
    どこでモードレスフォームの表示コードを書き
    どこでどのような破棄コードを書けばいいのでしょうか?

    ご教示ください

    その他2019では数多くの IDE Warning が出ますが
    でなくなる、または少なくする設定があればご教示ください


違反を報告
引用返信

▽[全レス7件(ResNo.3-7 表示)]
■34405 / ResNo.3)  Re[3]: モードレスフォーム Warning IDE0067を回避したい
□投稿者/ katu 一般人(3回)-(2019/11/29(Fri) 10:38:05)
  • アイコンNo34404に返信(katuさんの記事)

    > サンプルプロジェクト添付しようとしましたが
    > 502Bad Gateway
    > となりました

    おかしな現象がありました
    オリジナルのサンプルプロジェクトではIDE0067がでるのですが
    zio作成が悪かったのかと思い送ろうとしたzipを解凍して
    プロジェクトを読み込む正常に読み込み、IDE0067はでません




違反を報告
引用返信
■34406 / ResNo.4)  Re[3]: モードレスフォーム Warning IDE0067を回避したい
□投稿者/ 魔界の仮面弁士 大御所(1267回)-(2019/11/29(Fri) 10:46:03)
  • アイコンNo34404に返信(katuさんの記事)
    > Community 2019 バージョン16.3.10

    こちらも 16.3.10 です。Enterprse 2019 ですけれど。

    新規プロジェクトにおいては、既定では分析機能は有効になっておらず、
    提示のコードを入力するだけでは警告が表示されることは無いはずです。

    どこかの時点で、意図的に分析設定を有効にしていたのでしょう。


    > サンプルプロジェクト添付しようとしましたが
    > 502Bad Gateway
    > となりました

    では、規則セットは分かりますか?

    検証コードの .vbproj をメモ帳で開いた上で、XML タグの

    ・/Project/Import の一覧
    ・/Project/PropertyGroup/CodeAnalysisRuleSet

    の内容を教えてください。
    新規プロジェクトだと、上記のどちらも存在しないことがありますので、
    現象の発生しているプロジェクトの物で確認して下さい。
違反を報告
引用返信
■34407 / ResNo.5)  Re[4]: モードレスフォーム Warning IDE0067を回避したい
□投稿者/ katu 一般人(4回)-(2019/11/29(Fri) 12:58:03)
  • アイコンNo34406に返信(魔界の仮面弁士さんの記事)

    お送りしようとしたプロジェクトは新規作成ですが

    Form1
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim f As New Form2
    f.Show(Me)
    End Sub

    これでIDE0067が出ました

    このプロジェクトファイルには
    CodeAnalysisRuleSet
    は、ありません

    <Import Include="Microsoft.VisualBasic" />
    <Import Include="System" />
    <Import Include="System.Collections" />
    <Import Include="System.Collections.Generic" />
    <Import Include="System.Data" />
    <Import Include="System.Drawing" />
    <Import Include="System.Diagnostics" />
    <Import Include="System.Windows.Forms" />
    <Import Include="System.Linq" />
    <Import Include="System.Xml.Linq" />
    <Import Include="System.Threading.Tasks" />

違反を報告
引用返信
■34408 / ResNo.6)  【報告】この投稿はマルチポストです
□投稿者/ (報告) 大御所(272回)-(2019/11/29(Fri) 21:36:45)
  • アイコンこの投稿はマルチポストです。もし元記事の投稿者にマルチポストの心当たりがない場合は、すぐに返信でお知らせください。

    ●マルチポストされている場所
    https://social.msdn.microsoft.com/Forums/ja-JP/b72dc588-38a8-45b7-87dd-a136001b0e2c/warning0067?forum=vsgeneralja

    ----------
    この掲示板ではマルチポストが禁止されています。詳しくは、「書き込みのルールについて」をお読みください。

    ●書き込みのルールについて
    https://dobon.net/vb/bbs/index.html
違反を報告
引用返信
■34409 / ResNo.7)  Re[6]: 【報告】この投稿はマルチポストです
□投稿者/ katu 一般人(5回)-(2019/11/30(Sat) 09:26:13)
  • アイコンNo34408に返信((報告)さんの記事)
    > この投稿はマルチポストです。もし元記事の投稿者にマルチポストの心当たりがない場合は、すぐに返信でお知らせください。
    >
    > ●マルチポストされている場所
    > https://social.msdn.microsoft.com/Forums/ja-JP/b72dc588-38a8-45b7-87dd-a136001b0e2c/warning0067?forum=vsgeneralja

    魔界の仮面弁士さん、みなさま
    申しわけございませんでした

    以下で警告されなくなりましたのでご迷惑お掛けしましたが
    解決とさせていただきます


    Private Async Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

    Dim completionSource As New System.Threading.Tasks.TaskCompletionSource(Of Object)
    Using fas As New frmA
    AddHandler fas.FormClosed, Sub()
    completionSource.TrySetResult(Nothing)
    End Sub
    fas.Show(Me)
    Await completionSource.Task
    End Using
    End Sub
解決み!
違反を報告
引用返信

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



■記事リスト / ▼下のスレッド / ▲上のスレッド
■34297 / 親記事)  IE11では表示されるが、.netのWebBrowserでは、表示されないHPを表示する方法
□投稿者/ minarai_database 一般人(1回)-(2019/10/02(Wed) 12:01:36)
  • アイコン環境/言語:[VisualStudio2017 VB.net,C#] 
    分類:[.NET] 

    (環境)
    Windows7(10の時もある) VisualStudio2017 VB.NET(C#で回答でも構いません)
    フォームにWebBrowser(レジストリーをさわり、IE7をIE11に切り替えて使用しています。)を配置して下記のアドレスをNavigateしてもHPが表示されません。
    https://shikiho.jp/stocks/1944
    しかし、 Internet Explorer 11では、アドレスを入力すると表示されます。

    WebBrowserで、表示する方法、わかる人いましたら教えて頂けないでしょうか?
    宜しくお願いいたします。
違反を報告
引用返信

▽[全レス7件(ResNo.3-7 表示)]
■34301 / ResNo.3)  Re[3]: IE11では表示されるが、.netのWebBrowserでは、表示されないHPを表示する方法
□投稿者/ 魔界の仮面弁士 大御所(1239回)-(2019/10/02(Wed) 16:21:53)
  • アイコンNo34297に返信(minarai_databaseさんの記事)
    > 下記のアドレスをNavigateしてもHPが表示されません。
    > https://shikiho.jp/stocks/1944

    そもそも四季報オンラインは、Microsoft InternetExplorer からの
    正常動作を保証していないそうです。
    https://info.shikiho.jp/help/notice/detail/%E3%80%90%E9%87%8D%E8%A6%81%E3%80%91microsoft-internetexplorer%E3%82%92%E3%81%8A%E4%BD%BF%E3%81%84%E3%81%AE%E6%96%B9%E3%81%B8/


    > しかし、 Internet Explorer 11では、アドレスを入力すると表示されます。

    開けることは開けますが、CORS 警告が出ていました。(仔細未確認)


    > WebBrowserで、表示する方法、わかる人いましたら教えて頂けないでしょうか?

    x86 ビルドと x64 ビルドの両方で検証してみました。

    サイト側の問題で多少スクリプトエラーが出ますが、それらを無視して動かした場合、
    IE7〜10 モードだと、真っ白なページのまま先に進まなくなってしまったのですが、
    IE11 モードの場合は、15秒ぐらいかけて全コンテンツがロードされているようです。


    // --- Program.cs ---
    using Microsoft.Win32;
    using System;
    using System.Diagnostics;
    using System.IO;
    using System.Windows.Forms;
    namespace WindowsFormsApp
    {
      public static class Program
      {
        [STAThread]
        private static void Main()
        {
          RegistIEMode();
          Application.EnableVisualStyles();
          Application.SetCompatibleTextRenderingDefault(false);
          Application.Run(new Form1());
        }

        private static void RegistIEMode(int? dword = 11001)
        {
          string filename = Path.GetFileName(Process.GetCurrentProcess().MainModule.FileName);
          Debug.Assert(Registry.CurrentUser != null, "Registry.CurrentUser != null");
          RegistryKey key1 = Registry.CurrentUser.CreateSubKey(@"SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION");
          RegistryKey key2 = Registry.CurrentUser.CreateSubKey(@"SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BEHAVIORS");
          if (dword != null)
          {
            key1?.SetValue(filename, dword, RegistryValueKind.DWord);
            key2?.SetValue(filename, 1, RegistryValueKind.DWord);
          }
          else
          {
            key1?.DeleteValue(filename);
            key2?.DeleteValue(filename);
          }
          key1?.Close();
          key2?.Close();
        }
      }
    }


    // --- Form1.cs ---
    using System.Windows.Forms;
    namespace WindowsFormsApp
    {
      public partial class Form1 : Form
      {
        public Form1()
        {
          InitializeComponent();
          comboBox1.DataSource = new string[]
          {
            "https://supportdetails.com/",
            "https://shikiho.jp/stocks/1944",
          };
          webBrowser1.ScriptErrorsSuppressed = false; // あえて false で実験してみた
          Text = webBrowser1.Version.ToString();
          button1.Click += (sender, e) => webBrowser1.Navigate(comboBox1.Text);
          Shown += (sender, e) =>
          {
            comboBox1.SelectedIndex = 0;
            button1.PerformClick();
          };
        }
      }
    }
違反を報告
引用返信
■34304 / ResNo.4)  Re[4]: IE11では表示されるが、.netのWebBrowserでは、表示されないHPを表示する方法
□投稿者/ minarai_database 一般人(3回)-(2019/10/03(Thu) 09:39:13)
  • アイコン 魔界の仮面弁士様 お返事有難うございます。

    社内システムの関係でIEに固執していましたが、WebBrowserを諦めChromeに乗り換えます。
    その場合、Seleniumによる制御が便利でしょうか?


違反を報告
引用返信
■34305 / ResNo.5)  Re[5]: IE11では表示されるが、.netのWebBrowserでは、表示されないHPを表示する方法
□投稿者/ 魔界の仮面弁士 大御所(1240回)-(2019/10/03(Thu) 10:26:01)
  • アイコンNo34304に返信(minarai_databaseさんの記事)
    > 社内システムの関係でIEに固執していましたが、WebBrowserを諦めChromeに乗り換えます。

    そもそも目的は何でしょうか?
    閲覧ツールの作成? それともスクレイピング目的?

    HTML 要素の取得なら、Selenium の他、HtmlAgilityPack や AngleSharp 等の
    選択肢が思い当たりますが、今回の目的に合致するかは分かりません。
    (当方は、会社四季報オンラインのアカウントを持ち合わせていないため)


    また、データの自動収集が目的だとすると、同サービス規約の
    第13条1項10号に抵触する可能性があるかもしれません。
    https://s.toyokeizai.net/category/SERVICELIST/SHIKIHO.html

    》 第13条(利用者のその他の禁止行為)

    》 1. 利用者は、本規約の他の条項において禁止される行為の他、本サービスにおいて以下の行為をしてはならないものとします。また、運営者は(以下略)

    》 (10) 本サービスで提供された情報を、コンピューター等を利用して自動取得する行為
違反を報告
引用返信
■34306 / ResNo.6)  Re[6]: IE11では表示されるが、.netのWebBrowserでは、表示されないHPを表示する方法
□投稿者/ minarai_database 一般人(4回)-(2019/10/03(Thu) 10:48:03)
  • アイコン閲覧目的ですよ!
    所有株をエクセルで管理しているので、四季報の画面を立ち上げてイチイチコード入力するのが面倒なので・・・

    有難うございました。
違反を報告
引用返信
■34307 / ResNo.7)  Re[7]: IE11では表示されるが、.netのWebBrowserでは、表示されないHPを表示する方法
□投稿者/ minarai_database 一般人(5回)-(2019/10/03(Thu) 11:39:18)
  • アイコン有難うございました
解決み!
違反を報告
引用返信

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



■記事リスト / ▼下のスレッド / ▲上のスレッド
■34114 / 親記事)  数字だけで構成されてるCSVフィールドが自動的に数値として解釈される
□投稿者/ Iraquser 一般人(1回)-(2019/02/05(Tue) 11:16:21)
  • アイコン環境/言語:[Win10 c#] 
    分類:[.NET] 

    いつもお世話になっています。「CSV形式のファイルをDataTableや配列等として
    取得する」(https://dobon.net/vb/dotnet/file/readcsvfile.html)を参考に、
    CSVから情報を読み取るアプリを作成中です。
    入力するCSVデータの中に数字のみで構成されたフィールドを含んでおり、先
    頭(最上位桁)が「0」の場合にエラーが発生して困っています。フィールドを
    構成する文字が数字だけのため自動的に整数型と判断されるようです。
    数字だけで構成されたフィールドも文字列として認識させるためには、それなり
    のコードを自分達で書くしかないのでしょうか。該当フィールドをダブルクォー
    テーションで囲むとか、schema.iniを同じディレクトリに作成するとかすれば解
    決する事は判っているのですが、CSVを吐くセクションが顧客資産の時代物(
    ソースが行方不明)で変更は事実上不可能、それなりのコードを自分達(?)で
    書く事は大人の事情でハードルが高い事を御理解の上で御指導お願いします。
    
    >        private void Form1_Shown(object sender, EventArgs e) {
    >            ReadCSV();
    >        }
    >        private void ReadCSV() {
    >            //CSVファイルのあるフォルダ
    >            string csvDir = System.Environment.CurrentDirectory;
    >            //CSVファイルの名前
    >            string csvFileName = "test.csv";
    >            //接続文字列
    >            string conString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
    >                + csvDir + ";Extended Properties=\"text;HDR=No;FMT=Delimited\"";
    >            System.Data.OleDb.OleDbConnection con =
    >                new System.Data.OleDb.OleDbConnection(conString);
    >            string commText = "SELECT * FROM [" + csvFileName + "]";
    >            System.Data.OleDb.OleDbDataAdapter da =
    >                new System.Data.OleDb.OleDbDataAdapter(commText, con);
    >            //DataTableに格納する
    >            DataTable dt = new DataTable();
    >            da.Fill(dt);
    >        }
    
    入力データ
    >001,01234
    >012,ABCDE
    >123,あいうえお
    
    
    

286×193 => 250×168
イメージ
1549332981.png
/2KB
違反を報告
引用返信

▽[全レス7件(ResNo.3-7 表示)]
■34117 / ResNo.3)  Re[1]: 数字だけで構成されてるCSVフィールドが自動的に数値として解釈される
□投稿者/ まりもん 一般人(5回)-(2019/02/05(Tue) 12:24:23)
  • アイコン出力されるCSVのフォーマットは決まっているのでしょうから、schema.iniを読み込み側が用意すれば言いだけなのではないですか?
    CSVを出力する側が用意する決まりがあるわけでもないですし。
違反を報告
引用返信
■34118 / ResNo.4)  Re[2]: 数字だけで構成されてるCSVフィールドが自動的に数値として解釈される
□投稿者/ Iraquser 一般人(2回)-(2019/02/05(Tue) 13:55:40)
http://Win10 c#
  • アイコンNo34116に返信(魔界の仮面弁士さんの記事)

    魔界の仮面弁士さん、お世話になります。

    > データ中に「改行」「"」「,」などの特殊文字を含むような CSV で無いのなら、
    > File.ReadAllLines を Split するような LINQ 式で処理した方が手っ取り早いかも。
    そうですね。No34116のCSV例では含んでいませんが、実際のデータは改行を
    含みます。

    > もし、Jet/ACE を使って取り込む方法を採用するのであれば、
    > 取りうる選択肢としては下記の 3 通り。
    案1に関して同様のプランを検討しましたが、CSVが吐き出されるフォルダ
    が顧客側領域にあり、我々に更新権限がないため schema.ini の動的配置は難
    しく諦めた経緯があります。

    案2・案3の提案、ありがとうございます。当プログラムが動作する可能性の
    ある全PCのレジストリを顧客側各支店担当者様に更新して頂く事、あまりに
    も恐ろしく、尻込みしておりました。

    Jet/ACE を利用する以上、数字のみで構成されたフィールドは自動的に整数と
    認識されてしまう事、仕方のない事と理解しました。CSV入力プログラムの
    独自開発や案1〜3を含め、もう少し検討したいと思います。
    ありがとうございました。

違反を報告
引用返信
■34119 / ResNo.5)  Re[1]: 数字だけで構成されてるCSVフィールドが自動的に数値として解釈される
□投稿者/ Iraquser 一般人(4回)-(2019/02/05(Tue) 14:02:57)
http://Win10 c#
  • アイコンNo34114に返信(Iraquserさんの記事)
    自己レスです。[解決済み]のチェックを忘れてました。

解決み!
違反を報告
引用返信
■34120 / ResNo.6)  Re[3]: 数字だけで構成されてるCSVフィールドが自動的に数値として解釈される
□投稿者/ 魔界の仮面弁士 大御所(1194回)-(2019/02/05(Tue) 14:12:34)
  • アイコン2019/02/05(Tue) 14:18:11 編集(投稿者)

    # 解決済みチェックはそのままにしておきます。

    No34118に返信(Iraquserさんの記事)
    > 案1に関して同様のプランを検討しましたが、CSVが吐き出されるフォルダ
    > が顧客側領域にあり、我々に更新権限がないため schema.ini の動的配置は難
    > しく諦めた経緯があります。

    読み取り権限があるのなら、対象の CSV ファイルを
    Schema.ini を配置しておいた「一時作業用フォルダー」に
    コピーすることで回避できるのではないでしょうか。


    サイズが大きくて、ファイルのコピー負荷が問題になるようであれば、
    ハードリンクもしくはシンボリックリンクを試してみるとか。
解決み!
違反を報告
引用返信
■34129 / ResNo.7)  Re[4]: 数字だけで構成されてるCSVフィールドが自動的に数値として解釈される
□投稿者/ Iraquser 一般人(5回)-(2019/02/08(Fri) 11:10:53)
http://Win10 c#
  • アイコンNo34120に返信(魔界の仮面弁士さんの記事)

    > 読み取り権限があるのなら、対象の CSV ファイルを
    > Schema.ini を配置しておいた「一時作業用フォルダー」に
    > コピーすることで回避できるのではないでしょうか。
    はい、そうだと思います。検討案のひとつでした。

    結局、CSV解析プログラムの独自開発と言う事に決着しました。この部分を
    開発する要員として、顧客側の若手社員様を割り当てる(押し付けられる)事
    が決まっておりましたため、できる限りシンプルな構造にしたかったんです。
    でも、複数の(ソース管理すら出来てない)プログラムが吐いたCSVを解析
    するプログラムの設計・開発は、プログラミングに不慣れな顧客側若手社員様
    には荷が重いと判断し、自社の要員に担当させる事で顧客の了承を頂きました。

    丁寧なアドバイス、ありがとうございました」。

違反を報告
引用返信

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



■記事リスト / ▼下のスレッド / ▲上のスレッド
■34016 / 親記事)  フォームコントロールへのDataBindingsでプロパティが相互反映されない
□投稿者/ やむ 一般人(1回)-(2018/11/05(Mon) 13:38:52)
  • アイコン環境/言語:[Win10 VB.NET .NET Framework4.6.1] 
    分類:[.NET] 

    お世話になっております。
    
    DataBindingsで自作クラスのプロパティとフォームのコントロールを紐づけ、
    PropertyChangedでプロパティの変更を拾い、処理を行おうとしています。
    customer_code テキストボックス の値の変更を拾い、customer_name テキストボックスに
    値をセットすることはできるのですが、桁を補完した customer_code がテキストボックスに反映されません。
    原因と対処法をお教えください。
    よろしくお願いいたします。
    
    以下、ソース(一部抜粋)
    
    Public Class ModelBase
        Implements INotifyPropertyChanged
    
        Protected Overridable Sub OnPropertyChanged(<CallerMemberName()> Optional propertyName As String = Nothing)
            RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(propertyName))
        End Sub
        Public Event PropertyChanged(sender As Object, e As PropertyChangedEventArgs) Implements INotifyPropertyChanged.PropertyChanged
    End Class
    
    Public Class Customers
        Inherits ModelBase
    
        Private _customer_code As String
        Public Property customer_code As String
            Get
                Return _customer_code
            End Get
            Set(value As String)
                If Not value = _customer_code Then
                    _customer_code = value
                    OnPropertyChanged()
                End If
            End Set
        End Property
        Public Property customer_name As String
    End Class
    
    Public Class Form1
        Private WithEvents head As Customers
    
        Sub New()
            InitializeComponent()
    
            head = New Customers
            AddHandler head.PropertyChanged, AddressOf HeaderProperties_ValueChanged
            SetupHeaderControls()
        End Sub
    
        Private Sub SetupHeaderControls()
            For Each prop In head.GetType.GetProperties
                Select Case prop.Name
                    Case "is_output", "created_at", "created_name", "updated_at", "updated_name", "order_date"
                        '何もしない
                    Case Else
                        '同名のコントロールを取得
                        Dim con As Control = common.FindControl(Me, prop.Name)
                        'プロパティとコントロールの紐づけ
                        DataBindingsToControls(con, head, prop.Name)
                End Select
            Next
        End Sub
    
        Private Sub DataBindingsToControls(con As Control, src As Object, srcProperty As String)
            Dim prop As String = ""
            Select Case True
                Case TypeOf con Is TextBox, TypeOf con Is Label
                    con.DataBindings.Add("Text", src, srcProperty, True, DataSourceUpdateMode.OnValidation)
                Case TypeOf con Is ComboBox
                    con.DataBindings.Add("SelectedValue", src, srcProperty, True, DataSourceUpdateMode.OnPropertyChanged)
                Case TypeOf con Is CheckBox, TypeOf con Is RadioButton
                    con.DataBindings.Add("Checked", src, srcProperty, True, DataSourceUpdateMode.Never)
                Case TypeOf con Is DateTimePicker
                    con.DataBindings.Add("Value", src, srcProperty, True, DataSourceUpdateMode.OnValidation)
            End Select
        End Sub
    
        Private Sub HeaderProperties_ValueChanged(sender As Object, e As PropertyChangedEventArgs) Handles head.PropertyChanged
            If e.PropertyName = "customer_code" Then
                If Not head.customer_code = "" Then
                    Dim masterUtil As New MasterUtil
                    '入力値の前を"0"で埋める
                    head.customer_code = common.SetPrefix(head.customer_code, 6, "0")  '←プロパティの値は桁補完できているが、テキストボックスに反映されない
                    head.customer_name = masterUtil.GetCustomerName(head.customer_code)
                End If
            End If
        End Sub
    End Class

違反を報告
引用返信

▽[全レス7件(ResNo.3-7 表示)]
■34020 / ResNo.3)  Re[3]: フォームコントロールへのDataBindingsでプロパティが相互反映されない
□投稿者/ やむ 一般人(2回)-(2018/11/05(Mon) 17:58:05)
  • アイコンNo34019に返信(魔界の仮面弁士さんの記事)

    > 別案。
    > BindingComplete イベントを使ってみました。

    魔界の仮面弁士さん
    参考ソースまでありがとうございます。
    まだ実際に動かしたりできておりませんが、取り急ぎお礼まで。
違反を報告
引用返信
■34021 / ResNo.4)  Re[4]: フォームコントロールへのDataBindingsでプロパティが相互反映されない
□投稿者/ やむ 一般人(3回)-(2018/11/06(Tue) 09:51:01)
  • アイコン>>魔界の仮面弁士さん
    参考ソースありがとうございました。
    問題は解決できたので、解決済みとしますが、ひとつ教えてください。


    No34017に返信(魔界の仮面弁士さんの記事)
    > ■No34016に返信(やむさんの記事)
    >>値をセットすることはできるのですが、桁を補完した customer_code がテキストボックスに反映されません。
    >
    > ValueChanged イベント中で、Value を再編集しているためではないでしょうか。

    ValueChangedイベント内で、Valueを再編すると反映されないのはなぜでしょう。
    確かにイベント中に、head.customer_codeの値が変更されるので
    再度同じイベントが呼び出されますが、
    最終的にhead.customer_code に設定される値は、桁補完された値になります。
    それがコントロールに反映されない理由がわかりません。

    何か根本的な思い違いをしているのでしょうか。



解決み!
違反を報告
引用返信
■34022 / ResNo.5)  Re[5]: フォームコントロールへのDataBindingsでプロパティが相互反映されない
□投稿者/ 魔界の仮面弁士 大御所(1161回)-(2018/11/06(Tue) 11:12:26)
  • アイコンNo34021に返信(やむさんの記事)
    > ValueChangedイベント内で、Valueを再編すると反映されないのはなぜでしょう。

    自分としては、Binding クラスの内部実装において、
    再入防止策が取られているのだと認識しています。

    https://referencesource.microsoft.com/#System.Windows.Forms/winforms/Managed/System/WinForms/Binding.cs,bfa78df413fff04f,references


    > 再度同じイベントが呼び出されますが、
    > 最終的にhead.customer_code に設定される値は、桁補完された値になります。

    再入防止が原因となれば、そもそも変更通知イベント以外で処理すれば
    よいわけですから、今回のように、BeginInvoke メソッドとか
    BindingComplete イベントとかで処理することで回避できたのだと想像。
    (変更通知による無限ループに陥らないよう注意)
解決み!
違反を報告
引用返信
■34023 / ResNo.6)  Re[6]: フォームコントロールへのDataBindingsでプロパティが相互反映されない
□投稿者/ やむ 一般人(4回)-(2018/11/06(Tue) 14:20:02)
  • アイコンNo34022に返信(魔界の仮面弁士さんの記事)
    > 再入防止が原因となれば、そもそも変更通知イベント以外で処理すれば
    > よいわけですから、今回のように、BeginInvoke メソッドとか
    > BindingComplete イベントとかで処理することで回避できたのだと想像。
    > (変更通知による無限ループに陥らないよう注意)

    魔界の仮面弁士さん、重ね重ねありがとうございます。
    無限ループ、その可能性を考慮するのがすっかり抜け落ちておりました。

    今までコントロール側のLeaveイベントで処理をしていたものを
    違う形に変更しようと思い、試しに作ってみたのですが

    「入力された内容を補完し、かつ補完した値を使って別プロパティに値をセットする」

    ことをしようとした場合、そもそもPropertyChangedイベントで拾うのではなく、
    違う方法となるような気がします。
    今回魔界の仮面弁士さんが示してくれた方法は、そのやり方でするなら、こう対処すればいいんじゃない?的なアドバイスだと思いました。

    何か参考になるドキュメント等あればご紹介いただけますと幸いです。
解決み!
違反を報告
引用返信
■34024 / ResNo.7)  Re[7]: フォームコントロールへのDataBindingsでプロパティが相互反映されない
□投稿者/ やむ 一般人(5回)-(2018/11/06(Tue) 15:42:18)
  • アイコンもうひとつ。
    PropertyChangedイベントを使用して今回の処理をしようとしたのは、
    自作クラスを格納したBindingListとDataGridViewをDataSourceで紐づけて
    同様のことをしているのですが、そっちは問題なく動作している点もあります。
解決み!
違反を報告
引用返信

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



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






Mode/  Pass/


- Child Tree -