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) |



■記事リスト / ▼下のスレッド
■34555 / 親記事)  .net Chartで二重ドーナツグラフの作り方
□投稿者/ わん 一般人(1回)-(2020/10/13(Tue) 13:22:32)
  • アイコン環境/言語:[VisualStudio2017 VB.net,C#] 
    分類:[.NET] 

    エクセルでは、簡単に作成することができる。二重ドーナツグラフをChartオブジェクトで作る方法が知りたいです。

    色々なキーワードでググってみたのですが、よく解りません。
    (グラフ自体は作れるようになりました)

    詳しい方イラッシャイましたら、ご指南の程宜しくお願い致します。


361×307 => 250×212
イメージ
doughnut-chart02-01.gif
/11KB
違反を報告
引用返信

▽[全レス3件(ResNo.1-3 表示)]
■34556 / ResNo.1)  Re[1]: .net Chartで二重ドーナツグラフの作り方
□投稿者/ 魔界の仮面弁士 大御所(1304回)-(2020/10/13(Tue) 14:29:44)
  • アイコンNo34555に返信(わんさんの記事)
    > 二重ドーナツグラフをChartオブジェクトで作る方法が知りたいです。
    > 色々なキーワードでググってみたのですが、よく解りません。

    ググっただけで試していませんが、このような投稿を見つけました。
    https://stackoverflow.com/questions/18176569/creating-2d-grouped-donut-chart-in-c-sharp

違反を報告
引用返信
■34557 / ResNo.2)  Re[1]: .net Chartで二重ドーナツグラフの作り方
□投稿者/ Hongliang 大御所(588回)-(2020/10/13(Tue) 14:31:57)
  • アイコンhttps://stackoverflow.com/questions/30051010/pie-chart-transparency-multiple-pies
    ChartAreaを2つ用意してやってそれを重ねる形で実現できるようですね。

    // ただ描画順番の都合上どっちか片方のラベルがもう片方の裏に回ってしまうケースが出てくるのは避けられなさそう…。
違反を報告
引用返信
■34558 / ResNo.3)  Re[2]: .net Chartで二重ドーナツグラフの作り方
□投稿者/ わん 一般人(2回)-(2020/10/14(Wed) 11:13:30)
  • アイコンご指南有難う御座います。

    直接的には、できないが、工夫をすれば疑似的に表現は可能であると理解しました。

    原則、二重にしないで、どうしても、必要な場合は、Execlのエンジンを使うことにしました。
    大変助かりました。

    有難う御座います。



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

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



■記事リスト / ▼下のスレッド / ▲上のスレッド
■34545 / 親記事)  exeをショートカットから起動した場合のエラー
□投稿者/ Wassy 一般人(1回)-(2020/10/04(Sun) 03:09:43)
  • アイコン環境/言語:[Windows10, VB.NET Framework 4.6] 
    分類:[.NET] 

    お知恵をお貸しください。

    状況を時系列に記載させていただいます。

    @Setupプロジェクトにてデスクトップへショートカットが
     作成されるようにインストーラーを作成
    APCへインストール、デスクトップへショートカットができる
    Bデスクトップのショートカットアイコンよりexeを起動
     問題なく起動する
    CPCを再起動
    Dデスクトップのショートカットアイコンよりexeを起動
     「Windowsにexe名を設定しています。しばらくお待ちください。」
     のメッセージが出現し、約10秒後にexeが起動
    Eexeを閉じて、再度デスクトップのショートカットアイコンより
     exeを起動しても同様の事象が発生
    Fショートカットではなく、Cドライブ内のexeを直接起動させると
     メッセージは出ず、通常通り起動

    PCの再起動後にデスクトップのショートカットアイコンから
    exeを起動させるとこのようなメッセージが発生する原因は何でしょうか?

    情報が不足しておりましたら、恐れ入りますがご指摘ください。

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






     
     
459×145 => 250×78
イメージ
1601748583.png
/3KB
違反を報告
引用返信

▽[全レス2件(ResNo.1-2 表示)]
■34547 / ResNo.1)  Re[1]: exeをショートカットから起動した場合のエラー
□投稿者/ Azulean 大御所(517回)-(2020/10/04(Sun) 08:31:19)
  • アイコンNo34545に返信(Wassyさんの記事)
    > Dデスクトップのショートカットアイコンよりexeを起動
    >  「Windowsにexe名を設定しています。しばらくお待ちください。」
    >  のメッセージが出現し、約10秒後にexeが起動

    これはエラーメッセージではなく、Windows Installer による修復機能が動いていることを示しています。
    セットアッププロジェクトで作成したインストーラーは、デフォルトで「アドバタイズショートカット」となっており、Windows Installer によるチェックが働くようになっています。

    アドバタイズショートカットを無効にしたい場合については以下のページを確認してみてください。
    https://dobon.net/vb/dotnet/deployment/disableadvtshortcuts.html


    > PCの再起動後にデスクトップのショートカットアイコンから
    > exeを起動させるとこのようなメッセージが発生する原因は何でしょうか?

    インストールした後からファイル・フォルダーの状態が変わってしまっているなど、そのチェック・修復が呼び出される何か?が起きているのだと思います。
    インストール後にご自身で何かファイル・フォルダーに関する操作をされているか、アプリケーション自体にフォルダーの中身を書き換えるものがありませんか?
違反を報告
引用返信
■34554 / ResNo.2)  Re[2]: exeをショートカットから起動した場合のエラー
□投稿者/ Wassy 一般人(2回)-(2020/10/04(Sun) 19:57:58)
  • アイコンNo34547に返信(Azuleanさんの記事)

    Azuleanさん、ご回答ありがとうございます。
    頂いたアドバイスにより無事に解決することができました。

    > アドバタイズショートカットを無効にしたい場合については以下のページを確認してみてください。
    > https://dobon.net/vb/dotnet/deployment/disableadvtshortcuts.html
    →こちらを試したところ無事に解決することができました。

    > インストールした後からファイル・フォルダーの状態が変わってしまっているなど、そのチェック・修復が呼び出される何か?が起きているのだと思います。
    > インストール後にご自身で何かファイル・フォルダーに関する操作をされているか、アプリケーション自体にフォルダーの中身を書き換えるものがありませんか?
    →まさにご指摘の通りで、初回の起動時に古いバージョンでの不要なファイルの削除や設定ファイルの更新を行うようにさせていました。

    本当にありがとうございました。

    Wassy
     


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

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



■記事リスト / ▼下のスレッド / ▲上のスレッド
■34538 / 親記事)  デスクトップ と Desktop
□投稿者/ Vetty 一般人(1回)-(2020/09/25(Fri) 11:03:39)
  • アイコン環境/言語:[Windows10,VB2017,VB2019] 
    分類:[.NET] 

    Windows10 Home/Pro 両方
    VisualStudio 2017/2019両方
    すべて開発環境におけるDebug状態での実行

    MsgBox(System.Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory))

    で得られる文字列に

    デスクトップ と Desktop の二種類があります
    上記の混在環境においては常にそういう事態を予測しておくべきなのでしょうか?


違反を報告
引用返信

▽[全レス6件(ResNo.2-6 表示)]
■34540 / ResNo.2)  Re[2]: デスクトップ と Desktop
□投稿者/ Vetty 一般人(2回)-(2020/09/27(Sun) 16:30:54)
  • アイコン回答ありがとうございます。

    > SpecialFolder で示されるパス内容は、実行環境によって異なります。

    最初の質問にあった msgbox(・・・ の本当の目的は、
    Microsoftのサービスであり、 魔界の仮面弁士さんの回答にもある「OneDrive」に
    存在するフォルダのPathの取得です。つまり

    Environment.SpecialFolder.OneDriveDirectory

    のようなものが欲しいわけです。
    しかしMicrosoftの仕様ではそんなものはなさそうなので、エクスプローラから
    手動で得られる

    C:\Users\username\OneDrive\目的フォルダ

    から想像して

    System.Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory)

    の文字列内の "\Desktop" を "\OneDrive\目的フォルダ" に置き換えればいい、
    と考えそのようなコーディングをしてそのPCで動作OKを確認しました。
    (そのソフト自体もOneDriveに保存してあります)
    で、別の場所で別のPCから同じソフトをDebug状態で実行して今回の質問になったわけです。

    今の段階では 
     デスクトップ
     Desktop
     半角カナの "テ゛スクトッフ゜"
    の3種類をIf文で判断して置き換えるのが現実的な方法でしょうか?
違反を報告
引用返信
■34541 / ResNo.3)  Re[3]: デスクトップ と Desktop
□投稿者/ Hongliang 大御所(587回)-(2020/09/27(Sun) 17:03:00)
  • アイコン親フォルダのパスを取得するなら、System.IO名前空間PathクラスのGetDirectoryName静的メソッドを使えます。
    パスの結合は同じくPathクラスのCombine静的メソッドでできます。

    一般に C:\Users\ユーザ名 となっているフォルダのパスは、わざわざデスクトップフォルダ経由ではなくても SpecialFolder.UserProfile を使えば直接取得できます。

    ただ限られた環境ならそれでもいいかもしれませんが、汎用的にはダメそうですね。
    https://nj-clucker.com/move-onedrive-directory/
違反を報告
引用返信
■34542 / ResNo.4)  Re[3]: デスクトップ と Desktop
□投稿者/ 魔界の仮面弁士 大御所(1299回)-(2020/09/28(Mon) 10:02:09)
  • アイコンNo34540に返信(Vettyさんの記事)
    > Environment.SpecialFolder.OneDriveDirectory

    古い環境(SkyDrive やそれ以前も含む)を除外して良いのなら、

     MsgBox(Environ("OneDriveConsumer"))
     MsgBox(Environ("OneDrive"))

    でどうでしょう。
違反を報告
引用返信
■34543 / ResNo.5)  Re[4]: デスクトップ と Desktop
□投稿者/ 魔界の仮面弁士 大御所(1300回)-(2020/09/28(Mon) 10:11:42)
  • アイコンNo34542に追記(魔界の仮面弁士の記事)
    >  MsgBox(Environ("OneDriveConsumer"))
    >  MsgBox(Environ("OneDrive"))

    Windows 10 のバージョンが古い場合や、Windows 10 未満のバージョンでは、
    上記の OneDrive for Business や OneDrive の環境変数が存在しない事もあります。

    環境変数からパスが選らなかった場合には、さらに追加で
     HKEY_CURRENT_USER\SOFTWARE\Microsoft\OneDrive\UserFolder
    のレジストリエントリを探し、それも見当たらなければ、
     HKEY_CURRENT_USER\SOFTWARE\Microsoft\SkyDrive\UserFolder
    を探せばよいのでは無いでしょうか。
違反を報告
引用返信
■34544 / ResNo.6)  Re[5]: デスクトップ と Desktop
□投稿者/ Vetty 一般人(3回)-(2020/09/28(Mon) 21:58:22)
  • アイコン Hongliang 大御所 さま ありがとうございます

    >SpecialFolder.UserProfile を使えば直接取得できます。

    これが今回の私の目的を実現する本来の方法だったんですね。

    魔界の仮面弁士 さま ありがとうございます
     
    >  MsgBox(Environ("OneDriveConsumer"))
    >  MsgBox(Environ("OneDrive"))

    DOS窓の Setコマンドで見えるやつですね。
    思い出しました。
    こんなところもUpdateされているとは・・・

    >Windows 10 のバージョンが古い場合や、Windows 10 未満のバージョンでは、
    >上記の OneDrive for Business や OneDrive の環境変数が存在しない事もあります。

    今回の対象ユーザは少人数身近なメンバーですのでその辺の心配はないはず。

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


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

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



■記事リスト / ▼下のスレッド / ▲上のスレッド
■34533 / 親記事)  デザイナのプロパティウィンドウで静的プロパティを選択したい
□投稿者/ masa 一般人(1回)-(2020/09/15(Tue) 22:14:50)
  • アイコン環境/言語:[Windows 10 64bit, C# WinForms, .NET Framework 4.7.2] 
    分類:[.NET] 

    2020/09/15(Tue) 22:16:46 編集(投稿者)

    久しぶりに投稿させていただきます。

    C#のWinFormsアプリケーションでカスタムコントロールを作成しています。
    デザイナのプロパティウィンドウにおいて、クラス型プロパティの設定値を
    自作クラスの静的プロパティの中から選択・ソースに反映させたいです。

    イメージとしてはColorプロパティでシステムのControlを選択すると、
    ソースにSystem.Drawing.SystemColors.Control;と反映されるのを実現させたいです。

    以下は例として、カスタムコントロールのForeColorを自作クラスの静的プロパティから選択させるサンプルです。
    このままだと、ソースにはSystem.Drawing.Color.FromArgb(((int)(((byte)(254)))), ((int)(((byte)(254)))), ((int)(((byte)(254)))));のように反映されてしまうため、
    MyLabelColors.MyWhite;のように反映されるようにしたいです。
    上手く言葉で説明できず恐縮ですが、どなたか解決策をご教示いただけますと幸いです。

    public class MyLabel : Label
    {
    [Editor(typeof(MyLabelTypeEditor), typeof(UITypeEditor))]
    public override Color ForeColor { get => base.ForeColor; set => base.ForeColor = value; }
    }

    public class MyLabelTypeEditor : UITypeEditor
    {
    public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext context) => UITypeEditorEditStyle.DropDown;

    public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)
    {
    IWindowsFormsEditorService editorService = null;
    if (provider != null) editorService = provider.GetService(typeof(IWindowsFormsEditorService)) as IWindowsFormsEditorService;
    if (editorService == null) return value;

    var listBox = new ListBox();
    listBox.Click += (sender, e) => editorService.CloseDropDown();
    foreach (var propertiy in typeof(MyLabelColors).GetProperties())
    {
    listBox.Items.Add(propertiy.Name);
    }
    editorService.DropDownControl(listBox);

    return (listBox.SelectedItem != null ? typeof(MyLabelColors).GetProperty(listBox.SelectedItem.ToString()).GetValue(null) : value);
    }
    }

    public class MyLabelColors
    {
    public static Color MyBlack { get => Color.FromArgb(1, 1, 1); }
    public static Color MyWhite { get => Color.FromArgb(254, 254, 254); }
    }
違反を報告
引用返信

▽[全レス3件(ResNo.1-3 表示)]
■34534 / ResNo.1)  Re[1]: デザイナのプロパティウィンドウで静的プロパティを選択したい
□投稿者/ Hongliang 大御所(586回)-(2020/09/16(Wed) 09:43:37)
  • アイコン試してはいないですが、以下のページが参考にならないでしょうか。
    http://www.comrade.co.jp/component/dotnetroom/kt_vsdn/kt_vs5b.htm
違反を報告
引用返信
■34536 / ResNo.2)  Re[2]: デザイナのプロパティウィンドウで静的プロパティを選択したい
□投稿者/ masa 一般人(2回)-(2020/09/17(Thu) 22:51:54)
  • アイコンNo34534に返信(Hongliangさんの記事)
    > 試してはいないですが、以下のページが参考にならないでしょうか。
    > http://www.comrade.co.jp/component/dotnetroom/kt_vsdn/kt_vs5b.htm
    回答頂きありがとうございます。

    ページに記載されていたInstanceDescriptorについて調べてみたところ、SystemColorsもColorConverter内でInstanceDescriptorによって実現されていることが分かりました。
    しかしColorConverterを継承してもColor構造体からMyLabelColorsの特定ができなかったため、
    自作のクラスを作成して以下のソースのようにすることで目的は達成できました。ありがとうございます。

    ただ、基本的には問題ないのですが、プロパティウィンドウで値を変更すると稀にDesigner.csのソースが「this.myLabel1.ForeColor = ((PropertyTest.MyLabelColor)(PropertyTest.MyLabelColor.MyWhite));」のようにキャストがついてしまうことがあります。
    VisualStudioを立ち上げた直後にプロパティウィンドウで値を変更すると「this.myLabel1.ForeColor = PropertyTest.MyLabelColor.MyWhite;」のようにキャストはつかず期待通りになります。
    常にキャストがつかないようにしたいのですが、引き続きお知恵を拝借できますでしょうか。よろしくお願い致します。

    public class MyLabel : Label
    {
    public new MyLabelColor ForeColor
    {
    get => _ForeColor;
    set
    {
    _ForeColor = value;
    base.ForeColor = _ForeColor.Color;
    }
    }
    private MyLabelColor _ForeColor;
    }

    public class MyLabelTypeConverter : TypeConverter
    {
    public override bool GetStandardValuesSupported(ITypeDescriptorContext context)
    {
    return true;
    }

    public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context)
    {
    return new StandardValuesCollection(typeof(MyLabelColor).GetProperties().Select(p => p.Name).ToList());
    }

    public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType)
    {
    if (sourceType == typeof(string))
    {
    return true;
    }
    return base.CanConvertFrom(context, sourceType);
    }

    public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value)
    {
    if (value is string)
    {
    var myLabelColor = typeof(MyLabelColor).GetProperty(value.ToString())?.GetValue(null);
    if (myLabelColor != null)
    {
    return myLabelColor;
    }
    else
    {
    return new MyLabelColor("UnknownColor", Color.Transparent);
    }
    }
    return base.ConvertFrom(context, culture, value);
    }

    public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType)
    {
    if (destinationType == typeof(InstanceDescriptor))
    {
    return true;
    }
    return base.CanConvertTo(context, destinationType);
    }

    public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType)
    {
    if (destinationType == typeof(InstanceDescriptor))
    {
    return new InstanceDescriptor(typeof(MyLabelColor).GetProperty(value.ToString()), null);
    }
    return base.ConvertTo(context, culture, value, destinationType);
    }
    }

    [TypeConverter(typeof(MyLabelTypeConverter))]
    public class MyLabelColor
    {
    public static MyLabelColor MyBlack => new MyLabelColor(nameof(MyBlack), Color.FromArgb(1, 1, 1));
    public static MyLabelColor MyWhite => new MyLabelColor(nameof(MyWhite), Color.FromArgb(254, 254, 254));

    public string Name;
    public Color Color;

    public MyLabelColor(string name, Color color)
    {
    this.Name = name;
    this.Color = color;
    }

    public override string ToString()
    {
    return this.Name;
    }
    }
違反を報告
引用返信
■34537 / ResNo.3)  Re[3]: デザイナのプロパティウィンドウで静的プロパティを選択したい
□投稿者/ masa 一般人(3回)-(2020/09/19(Sat) 23:41:10)
  • アイコンNo34536に返信
    上記サンプルでは何故かキャストがつくことがありましたが、実際に使用するソリューションでは特に問題ありませんでしたので、解決済みとさせていただきます。
    ありがとうございました。
解決み!
違反を報告
引用返信

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



■記事リスト / ▲上のスレッド
■34529 / 親記事)  PHPでシリアライズした、データをデシリアライズしたい
□投稿者/ シルビア大好き 一般人(1回)-(2020/09/14(Mon) 17:01:14)
  • アイコン環境/言語:[VB.net .NET Framework 3.5] 
    分類:[.NET] 

    PHPでシリアライズしたデータを
    .netにてデシリアライズしたいのですが、
    参考になるようなページが見つからないです。

    jsonフォーマットではありません。
    a:1:{s1:10:"2020-10-01";
    のフォーマットとなります。

    データはテキスト形式ですが、それをデシリアライズしたいと考えております。
違反を報告
引用返信

▽[全レス4件(ResNo.1-4 表示)]
■34530 / ResNo.1)  Re[1]: PHPでシリアライズした、データをデシリアライズしたい
□投稿者/ 魔界の仮面弁士 大御所(1295回)-(2020/09/15(Tue) 11:50:44)
  • アイコンNo34529に返信(シルビア大好きさんの記事)
    > a:1:{s1:10:"2020-10-01";
    > のフォーマットとなります。

    a:1 という事から、要素数 1 の配列のように見受けられますが、
    提示されたフォーマットだと、unserialize できないのではありませんか?

    PHP は触ったことが無いので良く知らないのですが、
     serialize( array( '2020-10-01' ) );
    とも違うようですし。


    『a:1:{s1:10:"2020-10-01";』ではなく、
    『a:1:{i:0;s:10:"2020-10-01";}』とかで良ければ、こんなのとか。

    /// <seealso cref="https://gist.github.com/xiangwan/1225981/1f6d12679fe510ff241468561e0f80fa757f8db4"/>
    static void Main()
    {
     var text = "a:1:{i:0;s:10:\"2020-10-01\";}";
     dynamic contents = new Serializer().Deserialize(text);
    }
違反を報告
引用返信
■34531 / ResNo.2)  Re[2]: PHPでシリアライズした、データをデシリアライズしたい
□投稿者/ 魔界の仮面弁士 大御所(1296回)-(2020/09/15(Tue) 11:55:12)
  • アイコンNo34530に追記(魔界の仮面弁士の記事)
    > /// <seealso cref="https://gist.github.com/xiangwan/1225981/1f6d12679fe510ff241468561e0f80fa757f8db4"/>

    おっと、VB でしたか。

    上記の C# クラスを VB に翻訳して使うか、
    C# で DLL を作って、それを VB から参照設定してみてください。
違反を報告
引用返信
■34532 / ResNo.3)  Re[3]: PHPでシリアライズした、データをデシリアライズしたい
□投稿者/ 魔界の仮面弁士 大御所(1297回)-(2020/09/15(Tue) 13:26:19)
  • アイコンNo34531に返信(魔界の仮面弁士さんの記事)
    >>> a:1:{s1:10:"2020-10-01";
    > 上記の C# クラスを VB に翻訳して使うか、
    > C# で DLL を作って、それを VB から参照設定してみてください。

    別案。検索してみたらこんなのを見つけました。
    http://vbcity.com/forums/t/166368.aspx


    8/16/2012 7:06 AM の発言で紹介されている
    PHPSerializationLibrary.dll を参照設定に加えて、こんな感じです。

    PHP 本家の実装ほどには、厳密に検査していないようですので、
    最初の質問にあったフォーマットであっても、
    エラー無くデシリアライズされてしまうようです。

    Dim php As New Conversive.PHPSerializationLibrary.Serializer()
    Dim contents1 = php.Deserialize("a:1:{i:0;s:10:""2020-10-01"";}")
    Dim contents2 = php.Deserialize("a:1:{s1:10:""2020-10-01"";")
    Dim contents3 = php.Deserialize("a:1:{s:10:""2020-10-01"";")
    Dim contents4 = php.Deserialize("a:1:{s:10:""2020-10-01"";}")


    なお、上記の結果は下記と同様です。

    Dim contents1 As Object = New ArrayList() From {"2020-10-01"}
    Dim contents2 As Object = New Hashtable() From {{"2020-10-01", ""}}
    Dim contents3 As Object = New Hashtable() From {{"2020-10-01", New Object()}}
    Dim contents4 As Object = New Hashtable() From {{"2020-10-01", New Object()}}
違反を報告
引用返信
■34535 / ResNo.4)  Re[4]: PHPでシリアライズした、データをデシリアライズしたい
□投稿者/ シルビア大好き 一般人(3回)-(2020/09/16(Wed) 14:49:33)
  • アイコン> 魔界の仮面弁士さん
    回答いただき、ありがとうございます。
    最初にいただいた、回答に記載のURLにある
    C#のコードを.netに合わせて作ってみたところ、
    ハッシュテーブルとして、変数に設定することが出来ました。

    あとは、データをどのように扱うべきか検討する必要がありますが、
    そこから先は、自身で考えるべき内容なので、頑張ります。

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

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






Mode/  Pass/


- Child Tree -

2020/12/03(Thu) 06:12:39 に作成されたキャッシュを表示しています。
生のデータを表示する | キャッシュを最新にする