• 締切済み

C# formの併用

今,メインformに枠があり,そこをクリックするとform2が開きます. form2で何らかの情報を入力して「書き込み」ボタンを押したらメインformの枠に入力した情報を 反映させたいのですが,下記のコードだけではエラーが出てうまくいきません. 例えばform2において form1.rabel1.text=textbox1.text; とすると 「アクセスできない保護レベルになっています」というエラーが表示されます. どなたかこの解決方法をご教示願えないでしょうか?

みんなの回答

  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.2

どーでもいいけど普通は「label」じゃないかなぁ。 プロパティ使って実装する方法もあります。 こんな感じで。 public String Label1 { set { label1.text = value; } }

回答No.1

form1.rabel1.text がpublic じゃないからです。 通常は form1上に 下のようなメソッドを用意してあげて、それを form2で呼ぶような形がシンプルでしょう。 public void setRabel1(string txt) { this.rabel1.text = txt; }

Ashgin
質問者

補足

ご回答ありがとうございます. もうひとつご教授ください. form2で呼ぶような形とおっしゃておりますが,具体的にどのようにすればよろしいのでしょうか? 下記のような感じでよろしいのでしょうか? よろしくお願いいたします. Form1.Label1.Text=textBox1.Text;

関連するQ&A

  • C# Form処理

    Form1とForm3からForm2を表示させれるようにして,どちらかのフォームのコントロールをクリック したらform2が立ち上がりformに応じた処理を行いたいのですが,下記のコードではエラーとなって 動きません int Pin1 = f1.butt1; int Pin3 = f3.butt3; if (Pin1 == 1) { int h = f1.but; for (int hj = 1; hj < 43; hj++) { if (h == hj) { //Labelに文字を入力。 string Memo = "label" + (hj + 93); string Hd = "label" + (hj + 51); Label f1_Memo = (Label)f1.Controls[Memo]; f1_Memo.Text = this.textBox1.Text; Label f1_Hd = (Label)f1.Controls[Hd]; f1_Hd.Text = this.textBox2.Text; } } } else if (Pin3 == 1) { int h3 = f3.but3; for (int hj3 = 1; hj3 < 43; hj3++) { if (h3 == hj3) { //Labelに文字を入力。 string Memo = "label" + (hj3 + 744); MessageBox.Show(Memo.ToString()); Label f3_Memo = (Label)f3.Controls[Memo]; f3_Memo.Text = this.textBox1.Text; } } } Form1のコントロールであれば上のforループ,Form3であれば下のforループで処理するように考えております.Form1でform3を開くコントロールを選択した場合上記コードのbutt1は0になるように しているつもりです. エラーは NullReferenceExceptionがハンドルされませんでした. オブジェクト インスタンスの作成には new キーワードを使用します。 何がいけなくてどう対処すればよろしいのでしょうか? ご教授よろしくお願いいたします.

  • Form1からForm2へ情報の受け渡し C#

    http://dobon.net/vb/dotnet/form/accessanotherformdata.html 上記のHPを参考に、 メインクラスのForm1のtextboxにForm2から情報を代入したいのですがうまくいきません。 Form1.Form1Instance = this; のthisがエラーが出てしまいます。 「”namespace.Form2”を型”namespace.Form1”に暗黙的に変換できません」というのがエラーメッセージです。 文法には違いはないと思うのですが、何が原因として考えられますか? そのほか、気になった点としては、クラスが知らぬうちにpartialで作られていました。調べたところクラスの分割という意味のようですがこれが原因になりえますか?

  • 文字列で入力したプログラムからForm操作したい

    VBCodeProviderを使用し、文字列で入力したVBのコードを動的に実行可能なことを最近知りましたが、 このコードからプログラム本体のForm上のテキストボックス等にアクセスする方法はありますか? 下記リンク http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=44066&forum=7 に掲載されたコードを改造してMsgBoxの部分を、プロジェクトに追加したForm1上のTextBoxに表示するように 変更しました(単純に Form1.TextBox1.Text="xxx" と変更したのみ)。Form1のTextBox1に表示が出ることを期待しましたが、実行するとCompileAssemblyFromSourceでエラーが戻り、 oCompilerResultsは"名前 'Form1' は宣言されていません。"という内容となります。 文字列のコードに本体プログラムを参照させる記述が必要なんだろうと思いますが、その方法が分かっていません。 以上。よろしくお願いします。

  • C#で別スレッドからメインformをアクティブ化

    質問番号:7352165で質問中の者です。 デリゲートとInvokeを使ったスレッドでは、スレッド実行中にイベントが発生しないので止む無く直接スレッドを起動しているのですが、この方法ではメインformのTextBoxなどに直接アクセスできません。 それでアクセスするメソッドをデリゲート+Invokeで呼んでおり、TextBoxの表示は正常に動作していますが、フォーカスをメインformに移動させる為にActivate();メソッドを記述すると「フィールド初期化子は静的でないフィールド、メソッド、または……を参照できません」の記述エラーとなります。 あまり理解できていないので基本的な使い方が間違っているかも知れませんが、何か解決策があればお教え下さい。 public void FormActive()  ← メインform(fmTax)に記述 {   this.Activate(); } private delegate void ActivDelegate(); ← 別スレッドに記述 ActivDelegate activDelegate = delegate() {   fmTax.FormActive(); ← ここにエラー表示 };

  • Form1のtextBoxにアクセスしたいのですが

    WindowsフォームでForm1を作り、そこにtextBoxを貼り付けました。 自分で作ったKeisanクラスからtextBox.textの値を入力したいのですがどうやったら アクセスできるのでしょう。 自動生成されるInitializeComponent()をpublicに変えてみたりしたのですがダメでした。。 どなたかよろしくお願いします。

  • 他クラスからForm1内コントロルの操作方法を教えて(C#プログラミン

    他クラスからForm1内コントロルの操作方法を教えて(C#プログラミング) Form1で定義してあるtextBox1のText値を他クラスから操作したいのですが、そのコーディング要領が判らず困っております。どなたか教えてくださいませんか? 我流で下記の様なソース(要点のみ記述、他は省略)を作ってみましたが、コンパイルエラー「'object' に 'textBox1' の定義が含まれておらず、型 'object' の最初の引数を受け付ける拡張メソッドが見つかりませんでした。using ディレクティブまたはアセンブリ参照が不足しています。」がでます。 このエラーメッセージの意味を理解できず、何故Form1オブジェクトが伝わらないのか判らず、どこをどう直せばよいのか途方に呉れております。 以下我流C#ソースの抜粋 delegate void SetTextCallback(string text); public class Form1 {   通常のForm内コントロールの定義 Object formobj = this;   AAAclass aaa = new AAAclass (formobj);   この後Aclass内の基幹メソッドを走らせる } public class AAAclass { private Object formObject = null; public AAAclass(Object formobj) { formObject = formobj;    様々な初期化処理 } private void textDisplay(string text) { if (formObject.textBox1.InvokeRequired){  //この行の"textBox1"部分がエラー SetTextCallback d = new SetTextCallback(textDisplay); formObject.Invoke(d, new object[] { text }); //この行の"Invoke"部分がエラー } else { formObject.textBox1.Text = text;  //この行の"textBox1"部分がエラー } } この後、複数のスレッドを定義し、走らせている   それらのスレッドで上記の共通テキスト表示メソッドを利用している }

  • Formの間に値を渡すことについて

    素人の質問が以下のとおりです。 【Form1の設置:】 TextBox1 Button1 【Form2の設置:】 Label1 【要求:】 1. Form1のTextBox1に値(文字)を入力して、Button1をクリックすれば 2. Form2のLabel1からTextBox1に入力された値(文字)を表示される。   要するFormの間に値を渡すことです。 もちろん、ネットでも調べましたが、説明されたことをよくわからなかったのでシンプルなコードが頂きたいです。 自分が作ったNGものもアップします。 ------------------Form1内に記載した内容------------- Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim tmpMsg As String tmpMsg = TextBox1.text   Dim frmFrom1 As New Form1 frmFrom1.Show(tmpMsg) End Sub ---------------------------------------------------- ------------------Form2内に記載した内容------------- Public Class Form3 Private Sub Form2_Load(ByRef tmpMsg As String) Label1.Text = tmpmsg End Sub End Class ---------------------------------------------------- 結果として、エラーがなかったが、label1に何も表示されなかったです。 宜しくお願い致します。^@^

  • C# Formの操作

    Form2 form2 ; // 子 Form Form3 form3 ; // 子 Form private void button1_Click(object sender, System.EventArgs e) { form2 = new Form2() ; this.AddOwnedForm(form2) ; // 親 Form が form2 を所有する form2.Show() ; } private void button2_Click(object sender, System.EventArgs e) { form3 = new Form3() ; this.AddOwnedForm(form3) ; // 親 Form が form3 を所有する form3.Show() ; } 上記のようにボタン一つに対して1つのFormに対する処理をするのではなく,ボタン1つに対して 複数のFormを処理する.つまり 例えば,Form1,2,3とあったとして,Form1のボタンを押してFrom2を開き,そこで何らかの処理を したものをForm1に反映する.または,From3のボタンを押してForm2を開きそこで何らかの処理を 行いForm3に反映する. この場合,Form1とForm3のどちらのFormのボタンが押されたか判断しないといけないと思うのですが,ここの処理がうまくいきません. どちらかのFormのボタンを押してForm2を表示し,どちらかのFormに反映させる所までは出来たのですが,両方の判断材料を入れて,どちらのFormのボタンを押されたか判断する際に,押されなかった方が「null」となりエラーになります. 下記にこの判断部分を掲載いたします.どなたかご教授よろしくお願いいたします. Form1 public int but = 0; public int butt1; public string DB; public string HDB; public Form2 f2 = null; private void mybutton1_Click(object sender, EventArgs e) { butt1 = 1; ・ ・ ・ public int Ye=0; private void button43_Click(object sender, EventArgs e) { butt1 = 0; From2 public partial class Form2 : Form { Form1 f1; Form3 f3; public Form2(Form1 f) { f1 = f; // メイン・フォームへの参照を保存 InitializeComponent(); } public Form2(Form3 f) { f3 = f; // メイン・フォームへの参照を保存 InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { #region int Pin1 = f1.butt1; int Pin3 = f3.butt3; Form3 Form1と基本的には同じです.

  • formで複数のボタンを使いたい

    htmlの問題なので、カテゴリがhtmlかphpか迷いましたがphpで質問します。 htmlにおいて、form中にsubmitボタンを2個置きたいのです(例、修正ボタンと削除ボタン)。普通ならnameで区別しろということになり、飛び先(例えばaction=judge.php)中でnameで分岐させることになると思います。 ところが、現在phpフレームワークベースで開発しており、上記2つの処理を行うphpがすでにあるため、htmlからは、ボタンのactionによりそれぞれ別のphpを呼び出したいのです。以下に擬似コードを示しますが、以下のようにformが2つだと商品コード入力が2つになり、なんともおかしいので困っています。 form method=post action=edit.php input type=text 商品コード, input type=submit 修正 form method=post action=delete.php input type=text 商品コード, input type=submit 削除 質問のように1つのformに対して複数のsubmitを置くか、あるいは2つのformでも上記商品コードが1つであれば問題ないので、もしそのような方法があればご教示をよろしくお願いします。

    • ベストアンサー
    • PHP
  • 他クラスからForm1にアクセス

    Class1からForm1のtextBox1にアクセスする件、oboroxxさんの明快な回答を 参考にしまして、何とか下記の様にコードの実装が出来ました。 初めての事ですから、コメント頂けますと、大変有難いです。 追加質問: Q1) button1_Clickの中に、『Class1 obj=new Class1();』があります。 ここで、newで作られました、objはGCの対象になりますか? いや、そうではなく、button1_Clickが終了すると、objは消滅しますか? お手数ですが、宜しくお願いします。 ============================ using System; using System.Windows.Forms; namespace TT_SendMessage { public partial class Form1:Form { public Form1() { InitializeComponent(); } public void write_textBox1(string str){ textBox1.Text=str; //<---OK Console.WriteLine("VVVVVVVVVVVVVv"); } private void button1_Click(object sender,EventArgs e) { Class1 obj=new Class1(); obj.fm1_pr=this; obj.bbb(); //write_textBox1("aaa"); //<---OK } }// public partial class Form1:Form { //================ class Class1 { private Form1 fm1=new Form1(); public Form1 fm1_pr { set { this.fm1=value;} get { return this.fm1;} }//Form1 fm1 public void bbb() { fm1.write_textBox1("bbb");//non_static } }//class Class1 { //================ } 以上、宜しくお願いします。

専門家に質問してみよう