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

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

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

SelectedItemについて


(過去ログ 1 を表示中)

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

■828 / inTopicNo.1)  SelectedItemについて
  
□投稿者/ 新参老兵 二等兵(1回)-(2005/07/09(Sat) 23:38:15)

分類:[C#] 


分類:[C#] 

はじめまして初心者です。VS.NET2003win2ksp4です。ActiveContorolで取得したコントロールを.SelectedItemで使おうとすると"System.Windows.Forms.ContorolにSelectedItemの定義がありません。"のエラーがでます。何処が悪いのでしょうか。
よろしくご指導お願いします。
Control c_c;
c_c = this.ActiveControl;
comboBox1.Items.Clear();
r_sc(m_sc,c_c.SelectedItem.ToString(),4);
string[] st_c=new string[m_ken.Count];
for(int i=0;i<m_ken.Count;++i)
{
 st_c[i]=m_ken[i].ToString();
}
comboBox1.Items.AddRange(st_c);
comboBox1.Focus();

0
引用返信 編集キー/
■829 / inTopicNo.2)  Re[1]: SelectedItemについて
□投稿者/ ガッ 伍長(10回)-(2005/07/10(Sun) 03:14:47)

分類:[C#] 

"c_c.SelectedItem"を目的の型にキャストしてみては?


0
引用返信 編集キー/
■830 / inTopicNo.3)  Re[2]: SelectedItemについて
□投稿者/ ガッ 伍長(11回)-(2005/07/10(Sun) 03:15:09)

分類:[C#] 

orz
"c_c.SelectedItem"ではなく、"c_c"ですね(TT

0
引用返信 編集キー/
■831 / inTopicNo.4)  ガッさんありがとうございます
□投稿者/ 新参老兵 二等兵(2回)-(2005/07/10(Sun) 11:00:01)

分類:[C#] 

ガッさんありがとうございます。キャストいろいろ試みましたができませんでした。
私のやり方間違っているのでしょうが関数rs_cの2番目の引数として型はstringです。
キャスト前はコントロールです。型をListBoxにするとSelectedItemは使えますが
ActiveControlでは取得できなくなりました。やりたい事は単純なのですが
1個のコンボボックスと8個のリストボックスを作ってどのリストボックスのアイテムを
ダブルクリックしても自前の関数に引数として渡してコンボボックスのアイテムコレクションを変えたいのですが、8個のイベントにリストボックス名を変えたものを作れば
いいのでしょうが、それでは芸が無さ過ぎるのでActiveControlを使おうとしたのですが
できませんでした。手法としては定番のような気がするのですがご教授下されば幸いです。
private void listBox2_DoubleClick(object sender, System.EventArgs e)
{
string cs_c;
     cs_c = this.listBox2.SelectedItem.ToString();
comboBox1.Items.Clear();
r_sc(m_sc,cs_c,4);
string[] st_c=new string[m_ken.Count];
for(int i=0;i<m_ken.Count;++i)
{
   st_c[i]=m_ken[i].ToString();
}
comboBox1.Items.AddRange(st_c);
comboBox1.Focus();
}


0
引用返信 編集キー/
■832 / inTopicNo.5)  Re[4]: ガッさんありがとうございます
□投稿者/ ガッ 伍長(12回)-(2005/07/10(Sun) 18:05:34)

分類:[C#] 

> ガッさんありがとうございます。キャストいろいろ試みましたができませんでした。
> 私のやり方間違っているのでしょうが
何を試したのか分からないので、一概に「間違っている」とは思ってはいけませんw;

> 関数rs_cの2番目の引数として型はstringです。
( ・ω・)モニュ?…"rs_c"って何?

> キャスト前はコントロールです。
えーと、つまり "Control→String"のキャストをしようとしたわけですか…?
多分Controlには明示的なStringへのキャストが定義されていないので、無理だったと思います。
…原因はコレでしょうか?

> 型をListBoxにするとSelectedItemは使えますが
「何の」型をListBoxにしようとしましたか?
Control→ListBoxなら、新参老兵さんの説明に二つのオーバーロードがある気がします(…ぇ

> ActiveControlでは取得できなくなりました。
this.ActiveControlでは「何を」取得できなくなったのでしょう…
[ContainerControl].ActiveControlは、[ContainerControl]のアクティブな[Control]を返すプロパティのようです。
なので、適切な(例えば、ListBoxのような)型にキャストすれば「取得」出来るはずですが…(?

-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
ここからが、実際にやりたい事の説明ですね…段分けしてくれたら嬉しかったです。
> やりたい事は単純なのですが
> 1個のコンボボックスと8個のリストボックスを作ってどのリストボックスのアイテムを
> ダブルクリックしても自前の関数に引数として渡してコンボボックスのアイテムコレクションを変えたいのです
ここまでが、「やりたいこと」で、

-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
ここからが、「知りたいこと」ということですね。
> が、8個のイベントにリストボックス名を変えたものを作れば
> いいのでしょうが、それでは芸が無さ過ぎるのでActiveControlを使おうとしたのですが
> できませんでした。
> 手法としては定番のような気がするのですがご教授下されば幸いです。
何をしたのか分かりませんが…
新参老兵さんは、
1 どの[ListBox]をダブルクリックしたときでも、
2 その[ListBox]に関連した何かを、
3 自前の関数の引数として渡したい。
のですよね?

ということは、1&2をクリアするために大前提として、
「[ListBox]をダブルクリックした」というイベントを集中して受け取る部分が必要になると思います。
そのような部分は出来ていますか?

→例えばこんなの
//[Form]の初期化時の、[ListBox]が作られた後にこれを追加。
foreach(System.Windows.Forms.Control ctl in this.Controls)
if(ctl is ListBox)
((ListBox)ctl).DoubleClick+=new System.EventHandler(this.ListBoxDoubleClick);

//[Form]のメンバとしてListBoxDoubleClickを宣言する。
public void ListBoxDoubleClick(object sender,System.EventArgs e){
/* ここに、thisにある全てのリストボックスで起こる
* ダブルクリックのイベントが来る…ハズ。
*/
this.Text=((ListBox)sender).Name;
}

※熱があるので、大分暴走してるかもしれません(TT

0
引用返信 編集キー/
■833 / inTopicNo.6)  Re[5]: ガッさんありがとうございます
□投稿者/ 新参老兵 二等兵(3回)-(2005/07/11(Mon) 07:40:59)

分類:[C#] 

なるほどガッさんありがとうございます。リストボックス全体のイベントハンドラーを
作ってしまう分けですね。初心者にとってはかなり難しいですね。しかし、これが
できるとかなりのことができますね。しっかり勉強したいと思います。
どうもありがとうございました。

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


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

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -