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

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

C# と VB.NET の入門サイト

ColorDialogの作成した色の再表示方法・保存したい

[トピック内 17 記事 (1 - 17 表示)]  << 0 >>

■88440 / inTopicNo.1)  ColorDialogの作成した色の再表示方法・保存したい
  
□投稿者/ 無理ゲー (12回)-(2018/08/31(Fri) 22:53:43)

分類:[C#] 

VS2017 C# で、ColorDialogを表示し、"色の作成"ボタンで新規色を作成しColorDialog内の"作成した色"に登録します。
このアプリケーションを一度終了し、再度立ち上げColorDialogを表示した時、"作成した色"には前回作成した色が残っていません
どのようにすれば、"作成した色"を保存することができるのでしょうか?

引用返信 編集キー/
■88441 / inTopicNo.2)  Re[1]: ColorDialogの作成した色の再表示方法・保存したい
□投稿者/ Azulean (988回)-(2018/08/31(Fri) 22:54:53)
No88440 (無理ゲー さん) に返信
> どのようにすれば、"作成した色"を保存することができるのでしょうか?

ColorDialog の CustomColors プロパティを自分で保管し、次に表示するときに設定してください。


引用返信 編集キー/
■88443 / inTopicNo.3)  Re[2]: ColorDialogの作成した色の再表示方法・保存したい
□投稿者/ 無理ゲー (14回)-(2018/09/01(Sat) 01:02:30)
スミマセン。
やり方が全然わかりません。詳しく教えてもらってもいいですか?
引用返信 編集キー/
■88444 / inTopicNo.4)  Re[3]: ColorDialogの作成した色の再表示方法・保存したい
□投稿者/ shu (1139回)-(2018/09/01(Sat) 07:45:35)
No88443 (無理ゲー さん) に返信
> スミマセン。
> やり方が全然わかりません。詳しく教えてもらってもいいですか?

CustomColorsは追加した色がint配列で格納されているので
ダイアログを閉じたときにCustomColorsを参照して適当なファイルに保存

再度立ち上げたときに保存ファイルが存在していれば読込み、int配列を作成して
CustomColorsに設定
引用返信 編集キー/
■88445 / inTopicNo.5)  Re[4]: ColorDialogの作成した色の再表示方法・保存したい
□投稿者/ ぼーちゃん (2回)-(2018/09/01(Sat) 08:07:06)
ご参考に...

文字コードを指定してテキストファイルに書き込む
https://dobon.net/vb/dotnet/file/writefile.html

文字コードを指定してテキストファイルを読み込む
https://dobon.net/vb/dotnet/file/readfile.html
引用返信 編集キー/
■88446 / inTopicNo.6)  Re[3]: ColorDialogの作成した色の再表示方法・保存したい
□投稿者/ Azulean (989回)-(2018/09/01(Sat) 08:14:35)
No88443 (無理ゲー さん) に返信
> やり方が全然わかりません。詳しく教えてもらってもいいですか?

やり方は1つではないし、あなたがどのように望むのかもわからないので自分で方法を決めないといけません。

保存方法
・プロジェクトのプロパティの「設定」のような形で保存するのか
・特定のフォルダーに XML で保存するのか
・レジストリに保存するのか
・その他のファイルで保存するのか

そういった、自分のアプリケーションとして保存する場所・方法を決めて、それに合わせて CustomColors の値を書き込み、起動時に読み込み、ダイアログ表示前に設定する必要があります。
それは、すでに ColorDialog.CustomColors の質問ではなく、アプリケーションを再起動しても設定を保持する方法という別の質問だと思います。
引用返信 編集キー/
■88459 / inTopicNo.7)  Re[4]: ColorDialogの作成した色の再表示方法・保存したい
□投稿者/ 無理ゲー (15回)-(2018/09/02(Sun) 19:15:28)
> ・特定のフォルダーに XML で保存するのか

XMLに保存したいです。

CustomColors プロパティとは public int[] CustomColors { get; set; } の事ですよね?

>CustomColorsは追加した色がint配列で格納されているので
>ダイアログを閉じたときにCustomColorsを参照して適当なファイルに保存

どう参照すればいいのでしょう?

素人なので本当にわからないのですごく困ってます。

namespace ApplicationTest001
{
    public partial class Form1 : Form
    {
        private int Form1BackColor;

        //public int[] CustomColors { get; set; }


        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (colorDialog1.ShowDialog() == DialogResult.OK)
            {
                Form1BackColor = colorDialog1.Color.ToArgb();
                BackColor = colorDialog1.Color; 
            }
        }

        
        private void Form1_Load(object sender, EventArgs e)
        {
            textBox1.Text = Properties.Settings.Default.textBox1;
            Form1BackColor = Properties.Settings.Default.Form1BackColor;
        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            Properties.Settings.Default.textBox1 = this.textBox1.Text;
            Properties.Settings.Default.Save();
        }
    }
}

引用返信 編集キー/
■88460 / inTopicNo.8)  Re[5]: ColorDialogの作成した色の再表示方法・保存したい
□投稿者/ Azulean (990回)-(2018/09/02(Sun) 19:33:46)
No88459 (無理ゲー さん) に返信
> > ・特定のフォルダーに XML で保存するのか
>
> XMLに保存したいです。

私が書いた「特定のフォルダーに XML で保存」はすでに使用されている、Properties.Settings とは違う話ですが、本当に別ファイルにしたいのですか?
1ファイルに int[] を保存するだけで良いなら、XmlSerializer を使えばできます。

https://dobon.net/vb/dotnet/file/xmlserializer.html

> どう参照すればいいのでしょう?
> 素人なので本当にわからないのですごく困ってます。

「参照」とは「取得」なので、”int 型の配列(int[])を取り出してシリアライズすべし”ってことです。
シリアライズの1例は上記のリンクから。

引用返信 編集キー/
■88462 / inTopicNo.9)  Re[6]: ColorDialogの作成した色の再表示方法・保存したい
□投稿者/ ?????Q?[ (1回)-(2018/09/02(Sun) 20:19:11)
> 私が書いた「特定のフォルダーに XML で保存」はすでに使用されている、Properties.Settings とは違う話ですが、本当に別ファイルにしたいのですか?
> 1ファイルに int[] を保存するだけで良いなら、XmlSerializer を使えばできます。

出来るならProperties.Settingsで作られたApp.configの中に保存したいです。

VS2017の「プロジェクト」→「WindowsFormsApp1のプロパティ」→設定

これに仮に「CustomColorSave」の項目を作って中に保存することは出来るのでしょうか?
引用返信 編集キー/
■88463 / inTopicNo.10)  Re[7]: ColorDialogの作成した色の再表示方法・保存したい
□投稿者/ Azulean (991回)-(2018/09/02(Sun) 20:28:09)
2018/09/02(Sun) 20:42:54 編集(投稿者)

No88462 (?????Q?[ さん) に返信
> これに仮に「CustomColorSave」の項目を作って中に保存することは出来るのでしょうか?

できますが、int[] 型をそのまま入れるのは面倒なので、string に変換するという荒技で回避するかですね。
https://wp.me/p19AcI-8B
引用返信 編集キー/
■88467 / inTopicNo.11)  Re[8]: ColorDialogの作成した色の再表示方法・保存したい
□投稿者/ 無理ゲー (16回)-(2018/09/02(Sun) 22:09:30)
> できますが、int[] 型をそのまま入れるのは面倒なので、string に変換するという荒技で回避するかですね。
> 例 https://wp.me/p19AcI-8B

コレで上手くいかないのはなんででしょう?

private void LoadCustomColors(ColorDialog targetColorDialog)
private void SaveCustomColors(ColorDialog sourceColorDialog)

↑ココの呼び出し方読み込み方がわからない。

namespace ApplicationTest001
{

    public partial class Form1 : Form
    {
        
        private int Form1BackColor;

        public Form1()
        {
            InitializeComponent();
        }

        

        private void button1_Click(object sender, EventArgs e)
        {
            if (colorDialog1.ShowDialog() == DialogResult.OK)
            {
                Form1BackColor = colorDialog1.Color.ToArgb();
                BackColor = colorDialog1.Color;
                
            }
            
        }

        private void LoadCustomColors(ColorDialog targetColorDialog)
        {
            targetColorDialog.CustomColors =
                Properties.Settings.Default.ColorSettings.Split(new[] { ',' }, 16).Select(int.Parse).ToArray();
        }

        private void SaveCustomColors(ColorDialog sourceColorDialog)
        {
            Properties.Settings.Default.ColorSettings = string.Join(",", sourceColorDialog.CustomColors);
            Properties.Settings.Default.Save();
        }



        private void Form1_Load(object sender, EventArgs e)
        {
            textBox1.Text = Properties.Settings.Default.textBox1;
            Form1BackColor = Properties.Settings.Default.Form1BackColor;
        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            Properties.Settings.Default.textBox1 = this.textBox1.Text;
            Properties.Settings.Default.Save();
        }

        
    }
}

引用返信 編集キー/
■88468 / inTopicNo.12)  Re[9]: ColorDialogの作成した色の再表示方法・保存したい
□投稿者/ 無理ゲー (17回)-(2018/09/02(Sun) 22:11:10)
試しに別ボタンを作ってLoadとSaveをやってみたんですが
それは出来ました。
引用返信 編集キー/
■88471 / inTopicNo.13)  Re[9]: ColorDialogの作成した色の再表示方法・保存したい
□投稿者/ Azulean (992回)-(2018/09/02(Sun) 23:08:01)
No88467 (無理ゲー さん) に返信
> private void LoadCustomColors(ColorDialog targetColorDialog)
> private void SaveCustomColors(ColorDialog sourceColorDialog)
>
> ↑ココの呼び出し方読み込み方がわからない。

メソッド名と引数には名前である程度意味を持たせています。

 Load … 呼び出す(読み出す)
 CustomColors … CustomColors プロパティを
 targetColorDialog … 対象となる ColorDialog のインスタンス

という具合に、ある程度慣れていれば想像つくでしょうって感じで割り切っている部分ですね。
すでに Settings から読み込んでいる箇所、Settings に書き込んでいる箇所にこれらのメソッドを呼ぶコードを書けば良いです。
あるいは、メソッドを分けずに、インライン化(直接コードを埋め込む)でも良いでしょう。

(これで伝わらないとなると、Web 上での質問で続けていくのはつらい気がします…)
引用返信 編集キー/
■88475 / inTopicNo.14)  Re[10]: ColorDialogの作成した色の再表示方法・保存したい
□投稿者/ 無理ゲー (18回)-(2018/09/03(Mon) 01:08:26)
一応、出来たっぽいです。。。。
これであってますかね?

namespace ApplicationTest001
{

    public partial class Form1 : Form
    {
        
        private int Form1BackColor;
        

        public Form1()
        {
            InitializeComponent();
        }

        
        private void button1_Click(object sender, EventArgs e)
        {
            if (colorDialog1.ShowDialog() == DialogResult.OK)
            {
                Form1BackColor = colorDialog1.Color.ToArgb();
                BackColor = colorDialog1.Color;
            }
            
        }

        
        private void Form1_Load(object sender, EventArgs e)
        {
            textBox1.Text = Properties.Settings.Default.textBox1;
            Form1BackColor = Properties.Settings.Default.Form1BackColor;
            ColorSave();
        }

        private void ColorSave()
        {
            colorDialog1.CustomColors = Properties.Settings.Default.ColorSettings.Split(new[] { ',' }, 16).Select(int.Parse).ToArray();
        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            Properties.Settings.Default.textBox1 = this.textBox1.Text;
            Properties.Settings.Default.ColorSettings = string.Join(",", colorDialog1.CustomColors);
            Properties.Settings.Default.Save();
        }
    }
}

引用返信 編集キー/
■88477 / inTopicNo.15)  Re[11]: ColorDialogの作成した色の再表示方法・保存したい
□投稿者/ 無理ゲー (20回)-(2018/09/03(Mon) 01:40:55)
見た目的にこうかな?

namespace ApplicationTest001
{

    public partial class Form1 : Form
    {
        
        private int Form1BackColor;
        

        public Form1()
        {
            InitializeComponent();
        }

        
        private void button1_Click(object sender, EventArgs e)
        {
            if (colorDialog1.ShowDialog() == DialogResult.OK)
            {
                Form1BackColor = colorDialog1.Color.ToArgb();
                BackColor = colorDialog1.Color;
            }
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            textBox1.Text = Properties.Settings.Default.textBox1;
            Form1BackColor = Properties.Settings.Default.Form1BackColor;
            CustomColorLoad();
        }

        private void CustomColorLoad()
        {
            colorDialog1.CustomColors = Properties.Settings.Default.ColorSettings.Split(new[] { ',' }, 16).Select(int.Parse).ToArray();
        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            Properties.Settings.Default.textBox1 = this.textBox1.Text;
            CustomColorSave();
            Properties.Settings.Default.Save();
        }

        private void CustomColorSave()
        {
            Properties.Settings.Default.ColorSettings = string.Join(",", colorDialog1.CustomColors);
        }
    }
}

引用返信 編集キー/
■88479 / inTopicNo.16)  Re[11]: ColorDialogの作成した色の再表示方法・保存したい
□投稿者/ Azulean (994回)-(2018/09/03(Mon) 06:14:39)
2018/09/03(Mon) 06:48:12 編集(投稿者)

No88475 (無理ゲー さん) に返信
> これであってますかね?

動作していますよね?
どの辺を気にされて「あっていますかね?」と確認されたのかわかりませんが…。

最終形をどう持って行くかは個々の自由ですので、問題はないと思います。
(ここからどれを選んでも好みの領域なので…)
引用返信 編集キー/
■88480 / inTopicNo.17)  Re[12]: ColorDialogの作成した色の再表示方法・保存したい
□投稿者/ 無理ゲー (21回)-(2018/09/03(Mon) 07:34:37)
> 動作していますよね?
> どの辺を気にされて「あっていますかね?」と確認されたのかわかりませんが…。
>
> 最終形をどう持って行くかは個々の自由ですので、問題はないと思います。
> (ここからどれを選んでも好みの領域なので…)

あ、動作しました。ありがとうございました。スッキリしました。

解決済み
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ