Ynt: Formlar arası kontrol

Başlatan EMG81, 01 Eylül 2012, 16:20:24

EMG81

Merhaba,

2 yada daha fazla formlara arasında transfer yada kontrol yapamıyorum. Mesela 2 tane açık Form1 ve Form2 isimli formlarım olsun. Form2 üzerinden form1 deki bir textbox a müdahale edemiyorum. Aynı şekilde oradaki bir timer ı veya başka birşeyi durduramıyorum. Bunu nasıl halledebilirim?

Mesela ilk olarak Form2 üzerinden Form1 deki Picproje adındaki bir textbox ın içersine Merhaba yazdırmak istiyorum.

mesaj birleştirme:: 01 Eylül 2012, 16:35:42

Form1 deki nesneleri Public yaparak ve Form2 de form 1 i new form diye göstererek Form1 deki nesnelere ulaşabiliyorum ama müdahale edemiyorum. Mesela Form2 üzerinden Form1 deki textbox1 in içersine birşeyler yazamıyorum.

ERdow

Merhaba,

Benzer bir sorunla VisualBasic ile uğraşırken karşılaşmıştım. Sizin sorununuza da çözüm olur mu bilmem ama ben farklı formları aynı anda Load halinde tutup (ki bende diğer forum ekranda yer kaplamaması için kapatılıyordu) gerekli değişkenleri global üzerinden kayıtta bekletiyordum. Sizde görünür halde ise, misalen 1. formdan aldığınızı globale atıp ardından 2. formu göstererek globalden oraya çekebileceğinizi düşünüyorum. -Kısaca gerekli değişkenlerinizi tüm formların ulaşabileceği şekilde kayıtta tutmalısınız- . Umarım işinize yarar.

emosamca

Visual studio 6.0 da olan bu özellik artık visual studio 2003 den sonra yok. Form1 deki bir nesneye erişmek istiyorsan ya statik yapacaksın ya da form2 içerisine form1 i set edeceksin.

Örneğin form2 kodu:

   
public partial class form2 : Form
    {
        public Form1 m_form1;
        public form2()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            m_form1.picProje.Text = "Merhaba";
        }


form1 kodu:
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            form2 m_form2 = new form2();
            m_form2.m_form1 = this;
            m_form2.Show();
        }

form1 içerisine yerleştirdiğin textBox ı modifier değeri public olacak.

EMG81

#3
Ok. işte bu şekil kodu yazabiliyorum. Hata filan vermiyor. Normalde hata verir. Ama ne textboxın içersini okuyabiliyorum. Nede yazabiliyorum. Textbox modifier değerim public.

m_form2.m_form1 = this;   
Bu kodunuz da hata veriyor. Yani bende ki şu şekil

AnaEkran, Ayarlar

AnaEkran(nokta) Ayarlar yazmama izin vermiyor C#

armsistem


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {

        public static string form1deger = "deneme";
        
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Form2 frm = new Form2();
            frm.Show();
        }
    }
}


Form2 ----> form1'den değeri çeker messagebox basar.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }

        private void Form2_Load(object sender, EventArgs e)
        {
            MessageBox.Show (Form1.form1deger.ToString());
        }
    }
}

EMG81

Bu uğraştırıcı olan yöntem. Ben,

Form2 frm = new Form2();  // Diye tanımladıktan sonra

frm.textbox1.text = textbox2.text;  // Diye değiştirebilmek istiyorum



armsistem

Tam olarak anlamadım hangi formdan hangi değişkeni almak istiyorsun ?

EMG81

#7
2 form var.

Form1                                            Form2
Textbox1                                      Textbox2
                                                    Button1


Form2 deki textbox2 ye birşey yazıyorum. Button1 e basıyorum ve Yazdıklarımın form1 deki textbox1 de görünmesini istiyorum.

ArGeMaNiA

Delegate'ler ile yapılan tarzı da var.
Haydi göreyim sizi, vazife-i ubudiyetinizi unutmamak şartıyla öyle çalışınız ki,  rûy-i zemini, her tarafı herbirinize görülen ve her köşesindeki sesleri size işittiren bir bahçeye çeviriniz.

fatih6761

Kolay bir durum. Form1 deki textbox'a tıklayın. Sağdaki Properties sekmesinde Modifiers özelliğini Public yapın. Sonra Form2 nin kodlarına gelin ve şunları yazın:
public Form2(TextBox _ilkFormdakiTextBox)
{
    InitializeComponents();
    //..
    ilkFormdakiTextBox = _ilkFormdakiTextBox;
}

TextBox ilkFormdakiTextBox;

Sonra Form2 deki butona çift tıklayıp Click olayına şunu ekleyin:
public void button1_Click(object s, EventArgs e)
{
    ilkFormdakiTextBox.Text = this.textBox1.Text;
}

Form2 kısmı tamam. Form1 e dönelim, Form2 yi açtığınız satıra gidin ve şu şekilde değiştirin:
// ...
Form2 f2 = new Form2(this.textBox1);
f2.Show();
// ...

Bu kadar. Not : eğer son kodu eklemezseniz derleme hatası alırsınız... Eğer başka kontrolleride değiştirmek istiyorsanız komple Form1 nesnesinide yollayabilirsiniz. İstediğiniz nesnelerin Modifier larını public yapıp kontrol edebilirsiniz...

KABO

Bir class içerisinde  formları public static olarak aciyorum.

namespace WindowsFormsApplication1
{
    public static class tanimlamalar
    {
         public static Form1 frm1;
         public static Form2 frm2=new Form2(); 
       
    }
}



*******************form1 in içerigi

   public partial class Form1 : Form
    {
        public  TextBox text1;
       
        public Form1()
        {
            InitializeComponent();
           
        }

        private void button2_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            text1 = textBox1;
            tanimlamalar.frm1 = this; 
        }

        private void button1_Click(object sender, EventArgs e)
        {
            tanimlamalar.frm2.ShowDialog();
           
        }
    }
}




**********************form 2 nin içerigi

  public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void Form2_Load(object sender, EventArgs e)
        {
          //  label1.Text=tanimlamalar.frm1.text1.Text; 
        }

        private void button1_Click(object sender, EventArgs e)
        {
            tanimlamalar.frm1.text1.Text = textBox1.Text;
           
        }
     
    }
}




denedim ve calıstırdım umarım işine yarar
BILGI PAYLASTIKCA COGALIR...