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

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

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

Re[2]: 別フォームのコントロール操作


(過去ログ 110 を表示中)

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

■65264 / inTopicNo.1)  別フォームのコントロール操作
  
□投稿者/ 震えるひよこ (8回)-(2013/02/15(Fri) 15:08:53)

分類:[C#] 

いつもお世話になってます。
C#2010でプログラムをしております。

Form1に
dataGridView1・dataGridView2・dataGridView3と
設置しております。

Form2に
radioButton1・radioButton2・radioButton3と
設置しております。

dataGridViewのイベントCellContentDoubleClickで
Form2をオープンしているのですが、その時

Form1のdataGridView1 → Form2のradioButton1をChecked = true;
Form1のdataGridView2 → Form2のradioButton2をChecked = true;
Form1のdataGridView3 → Form2のradioButton3をChecked = true;

としたいのですが、
Form2.radioButton1.Checked = true;
ではアクセスできない保護レベルになっています。とエラーが出ます。

色々検索したんですが、これだ!という情報が見つけられず困っています。

Form1からForm2のコントロールの操作方法を
教えてください。m(_ _)mアドバイスお願いします。
引用返信 編集キー/
■65268 / inTopicNo.2)  Re[1]: 別フォームのコントロール操作
□投稿者/ howling (195回)-(2013/02/15(Fri) 16:35:33)
No65264 (震えるひよこ さん) に返信
こんにちわ。

単純にradioButtonのアクセスレベルがpublicになっていないために起こっている現象です。
一応3つほど方法は思いつきますが、3つ目をオススメします。

1.radioButton1のメンバ定義部分で、「private」or「protected」となっているアクセスレベルを「public」に変更する。
2.radioButton1を返すパブリックプロパティ(今回はgetのみで良い)を定義し、それを呼び出す。

//こんな感じ
public RadioButton RadioButton1
{
get { return radioButton1; }
}

3.Form2に、指定したラジオボタンのチェックを入れるパブリックメソッドを追加する。

public enum RadioButtonIndex
{
RadioButton_1,
RadioButton_2,
RadioButton_3
}

//こんな感じ
public void CheckButton(RadioButtonIndex eRadioButtonIndex)
{
switch(eRadioButtonIndex)
{
case RadioButtonIndex::RadioButton_1
{
this.radioButton1.Checked = true; //自分自身がForm2だから、this指定になっている
break;
}
//同様に他のも書く
}
}


アクセスレベルについては下記のURLあたりをどうぞ。
http://msdn.microsoft.com/ja-jp/library/wxh6fsc7(v=vs.80).aspx

3番目を薦める理由はオブジェクト志向が絡んでくるからなのですが、
私自身、これをしっかり説明しきれる程理解できているとは思っていません。
「そのオブジェクトに対してお願いして、自分自身は何も知らないでも良い形にする」というのが
なんとなく自分の中にありますので…。
引用返信 編集キー/
■65275 / inTopicNo.3)  Re[1]: 別フォームのコントロール操作
□投稿者/ shu (186回)-(2013/02/15(Fri) 19:22:46)
No65264 (震えるひよこ さん) に返信

> dataGridViewのイベントCellContentDoubleClickで
> Form2をオープンしているのですが、その時
>
> Form1のdataGridView1 → Form2のradioButton1をChecked = true;
> Form1のdataGridView2 → Form2のradioButton2をChecked = true;
> Form1のdataGridView3 → Form2のradioButton3をChecked = true;
>
> としたいのですが、
> Form2.radioButton1.Checked = true;
> ではアクセスできない保護レベルになっています。とエラーが出ます。
これはこの通り記述されているのでしょうか?
だとするとForm2の部分を作成したインスタンスにしないと駄目です。
引用返信 編集キー/
■65277 / inTopicNo.4)  Re[2]: 別フォームのコントロール操作
□投稿者/ 震えるひよこ (9回)-(2013/02/15(Fri) 21:28:47)
howlingさん shuさんアドバイスありがとうございます。

理解力がなくお礼に時間がかかってすみません^^;
やっと、思うような動きが実現できました。
ありがとうございます。m(_ _)m

動いた時は、
あれ?これってパラメーター渡すのと同じようなもの?って
思いました。(例えは違うかもしれませんが^^;)

インスタンスという言葉も始めて聞いて勉強になりました。
初心者過ぎる質問に回答いただきありがとうございました。
解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -