2016-05-13 3 views
-1

У меня есть форма C# Form1.cs и класс в том же проекте, что и RandWord.cs.C# Forms добавить текст в текстовое поле от другого класса

Теперь я хочу добавить текст в текстовое поле (tbRandom) из класса.

Я добавил следующий код Form1.cs:

public TextBox tbRandom; 

И следующий код класса:

public RandWord() 
{ 
    //get linecount 
    int linesGerman = File.ReadAllLines(pathGerman).Length; 
    int linesFrance = File.ReadAllLines(pathFrance).Length; 
    //check if same linecount 
    if (linesGerman == linesFrance) 
    { 
     //new random int 
     Random rnd = new Random(); 
     int rndLine = rnd.Next(1, File.ReadAllLines(pathGerman).Length); 
     //write to Form1's Textbox tbWord 
     f1.tbRandom.Text = rndLine.ToString(); 
     MessageBox.Show(rndLine.ToString()); 
    } 
} 

MessageBox только там, чтобы доказать, что Int не является пустым. Но текстовое поле ничего не отобразит. Исключений тоже нет. Класс вызывается кнопкой (RandWord();)

Любые идеи?

+1

Просто объявить текстовое поле, без установки размера и расположения, не будет делать вид, в виде –

+1

Maybe ' f1' - это не тот экземпляр, который вы видите. Также, если вы не видите «TextBox» в форме, возможно, вы забыли добавить элемент управления в форму. Поделитесь остальной частью связанного кода. –

+0

Напиши больше кода в своем вопросе. Это непонятно – mohsen

ответ

0

В вас From1:

 public TextBox tbRandom =new TextBox() ; 
    private void Form1_Load(object sender, EventArgs e) 
    { 
     this.Controls.Add(tbRandom); 
    } 
    public string TextBoxTxt { 
     get { return txtText1.Text; } 
     set { txtText1.Text = value; } 
    } 
//Your button RandWord 
private void RandWord_Click(object sender, EventArgs e) 
    { 
     RandWord(this); 
    } 

Ваш класс RandWord:

public RandWord(Form f1) 
{ 
    //get linecount 
    int linesGerman = File.ReadAllLines(pathGerman).Length; 
    int linesFrance = File.ReadAllLines(pathFrance).Length; 
    //check if same linecount 
    if (linesGerman == linesFrance) 
    { 
     //new random int 
     Random rnd = new Random(); 
     int rndLine = rnd.Next(1, File.ReadAllLines(pathGerman).Length); 
     //write to Form1's Textbox tbWord 
     f1.TextBoxTxt = rndLine.ToString(); 
     MessageBox.Show(rndLine.ToString()); 
    } 
} 
+0

Спасибо, что сработали отлично! – Shad0w

+0

С удовольствием рад слышать, что –

0

Вы можете написать контрактный метод для своего класса и передать ему TextBox, и вы можете получить доступ к TextBox оттуда.

class GenerateRandomWord 
    { 
     TextBox _t; 
     public GenerateRandomWord(TextBox t) 
     { 
      _t = t; 
     } 

     public void RandWord() 
     { 
     _t.Text = "Something!"; 
     } 
    } 
Смежные вопросы