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

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

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

コンボボックスの初期値を変更するには

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

■96200 / inTopicNo.1)  コンボボックスの初期値を変更するには
  
□投稿者/ 川崎 (6回)-(2020/10/30(Fri) 09:20:20)

分類:[C#] 

全くコードが浮かばないので、教えてください。
開発環境 VisualStudio2019
使用している言語 C# Windowsフォーム

ファイルAには、keyとvalueがおおよそ200ほど羅列してあります。
羅列の仕方はkeyとvalue、1つずつでワンセットとし、1行ごとに羅列してあります。

keyとvalueの例
aaa=AAAA
bbb=BBBB
ccc=CCCC

フォームにはテキストボックスが3つと、その横にコンボボックスが3つあります。
(テキストボックスとコンボボックスも1つずつでワンセットとお考え下さい)
コンボボックスのアイテムも---,AAAA,BBBB,CCCCとあります。
(3つあるコンボボックスはアイテムは全て同じとお考え下さい)

実現したいことは
1番目のテキストボックスと同じkeyをファイルAから検索し
Valueをコンボボックスに反映する。もしファイルAにない場合はコンボボックスの表示は初期値を0とする。


1番目のテキストボックスが aaa
2番目のテキストボックスが ddd
3番目のテキストボックスが ccc

この場合に表示したいcomboBoxは
1番目のコンボボックス AAA
2番目のコンボボックス --- 
3番目のコンボボックス CCC

以上です。
よろしくお願いいたします。






引用返信 編集キー/
■96201 / inTopicNo.2)  Re[1]: コンボボックスの初期値を変更するには
□投稿者/ furu (88回)-(2020/10/30(Fri) 09:42:31)
No96200 (川崎 さん) に返信
> 全くコードが浮かばないので、教えてください。
全くというのはどのへんなのですかね。

・テキストボックスから値を取るのがわからない
・ファイルを読み込むのがわからない
・3つのコードをひとつにするのがわからない
・コンボボックスへの表示がわからない

引用返信 編集キー/
■96202 / inTopicNo.3)  Re[1]: コンボボックスの初期値を変更するには
□投稿者/ kiku (204回)-(2020/10/30(Fri) 10:38:54)
No96200 (川崎 さん) に返信
> keyとvalueの例
> aaa=AAAA
> bbb=BBBB
> ccc=CCCC

下記のように、aaaが2つ以上存在することはありますか?

aaa=AAAA
aaa=AAAAAAA
bbb=BBBB
ccc=CCCC

引用返信 編集キー/
■96203 / inTopicNo.4)  Re[1]: コンボボックスの初期値を変更するには
□投稿者/ 魔界の仮面弁士 (2895回)-(2020/10/30(Fri) 10:52:07)
No96200 (川崎 さん) に返信
> keyとvalueの例

key というからには、key は重複無しということですかね?
(value の重複は気にしない)


> コンボボックスのアイテムも---,AAAA,BBBB,CCCCとあります。
> (3つあるコンボボックスはアイテムは全て同じとお考え下さい)
先頭に --- があることを除けば、
ファイルA の value と同じ内容ということでしょうか。

private SortedDictionary<string, string> contents;
private void Form1_Load(object sender, EventArgs e)
{
  contents = LoadFromFile(@"D:\TEMP\ファイルA.txt");
  var textBoxes = new[] { textBox1, textBox2, textBox3 };
  var comboBoxes = new[] { comboBox1, comboBox2, comboBox3 };
  for (int i = 0; i < 3; i++)
  {
    var c = comboBoxes[i];
    c.DataSource = contents.ToArray();
    c.DisplayMember = "Value";
    c.ValueMember = "Key";
    var t = textBoxes[i];

    // Form_Load 時に、Text の初期値で ComboBox の初期選択を設定
    if (contents.ContainsKey(t.Text))
    {
      c.SelectedValue = t.Text;
    }
    else
    {
      c.SelectedIndex = 0;
    }

    /*
    // テキスト変更時に、ComboBox の選択状態を変えたい場合
    t.TextChanged += delegate
    {
      if (contents.ContainsKey(t.Text))
      {
        c.SelectedValue = t.Text;
      }
      else
      {
        c.SelectedIndex = 0;
      }
    };
    */
  }
}

private SortedDictionary<string, string> LoadFromFile(string filePath)
{
  Encoding enc = Encoding.GetEncoding("Shift_JIS");
  var dic = new Dictionary<string, string> { { "", "---" } };
  foreach (string[] keyValue in File.ReadLines(filePath, enc).Select(s => s.Split('=')))
  {
    dic.Add(keyValue[0], keyValue[1]);
  }
  return new SortedDictionary<string, string>(dic);
}
引用返信 編集キー/
■96204 / inTopicNo.5)  Re[2]: コンボボックスの初期値を変更するには
□投稿者/ 川崎 (7回)-(2020/10/30(Fri) 11:37:32)
No96202 (kiku さん) に返信
> ■No96200 (川崎 さん) に返信
>>keyとvalueの例
>>aaa=AAAA
>>bbb=BBBB
>>ccc=CCCC
>
> 下記のように、aaaが2つ以上存在することはありますか?
>
> aaa=AAAA
> aaa=AAAAAAA
> bbb=BBBB
> ccc=CCCC
>

返信ありがとうございます。
同じkeyは存在しないこととします。
引用返信 編集キー/
■96205 / inTopicNo.6)  Re[2]: コンボボックスの初期値を変更するには
□投稿者/ 川崎 (8回)-(2020/10/30(Fri) 11:40:26)
No96203 (魔界の仮面弁士 さん) に返信
> ■No96200 (川崎 さん) に返信
>>keyとvalueの例
>
> key というからには、key は重複無しということですかね?
> (value の重複は気にしない)


返信ありがとうございます。
重複はしないこととします。
コード有難うございます、助かります。



>>コンボボックスのアイテムも---,AAAA,BBBB,CCCCとあります。
>>(3つあるコンボボックスはアイテムは全て同じとお考え下さい)
> 先頭に --- があることを除けば、
> ファイルA の value と同じ内容ということでしょうか。
>
> private SortedDictionary<string, string> contents;
> private void Form1_Load(object sender, EventArgs e)
> {
>   contents = LoadFromFile(@"D:\TEMP\ファイルA.txt");
>   var textBoxes = new[] { textBox1, textBox2, textBox3 };
>   var comboBoxes = new[] { comboBox1, comboBox2, comboBox3 };
>   for (int i = 0; i < 3; i++)
>   {
>     var c = comboBoxes[i];
>     c.DataSource = contents.ToArray();
>     c.DisplayMember = "Value";
>     c.ValueMember = "Key";
>     var t = textBoxes[i];
>
>     // Form_Load 時に、Text の初期値で ComboBox の初期選択を設定
>     if (contents.ContainsKey(t.Text))
>     {
>       c.SelectedValue = t.Text;
>     }
>     else
>     {
>       c.SelectedIndex = 0;
>     }
>
>     /*
>     // テキスト変更時に、ComboBox の選択状態を変えたい場合
>     t.TextChanged += delegate
>     {
>       if (contents.ContainsKey(t.Text))
>       {
>         c.SelectedValue = t.Text;
>       }
>       else
>       {
>         c.SelectedIndex = 0;
>       }
>     };
>     */
>   }
> }
>
> private SortedDictionary<string, string> LoadFromFile(string filePath)
> {
>   Encoding enc = Encoding.GetEncoding("Shift_JIS");
>   var dic = new Dictionary<string, string> { { "", "---" } };
>   foreach (string[] keyValue in File.ReadLines(filePath, enc).Select(s => s.Split('=')))
>   {
>     dic.Add(keyValue[0], keyValue[1]);
>   }
>   return new SortedDictionary<string, string>(dic);
> }
引用返信 編集キー/
■96206 / inTopicNo.7)  Re[3]: コンボボックスの初期値を変更するには
□投稿者/ WebSurfer (2139回)-(2020/10/30(Fri) 11:56:02)
No96205 (川崎 さん) に返信

引用は必要最低限にしてください。全文引用されたら読みにくくなるだけなので。
引用返信 編集キー/

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


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

このトピックに書きこむ