2016-06-24 7 views
0

У меня возник вопрос, возможно ли изменить значение поля базового класса из производного класса. В моем случае у меня есть два класса базового класса с окнами RichTextBox, и я хочу использовать производный класс для очистки RichTextBox.Изменение значения поля базового класса из производного

Initialize RichTextBox: класс

 this.rtfCode.Location = new System.Drawing.Point(45, 26); 
     this.rtfCode.Name = "rtfCode"; 
     this.rtfCode.ShowSelectionMargin = true; 
     this.rtfCode.Size = new System.Drawing.Size(100, 96); 
     this.rtfCode.TabIndex = 1; 
     this.rtfCode.Text = "some text"; 

Основание:

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

    private void button1_Click(object sender, EventArgs e) 
    { 
     Console.WriteLine(this.rtfCode.Text); 
     DerivedClass f = new DerivedClass(); 
     Console.WriteLine(f.rtfCode.Text); 
    } 
} 

Мой производный класс

class DerivedClass:Program 
{ 
    public DerivedClass() 
    { 
     base.rtfCode.Clear(); 
    } 
} 

, когда я выполнить программу и нажмите button в RichTextBox я все еще вижу текст.

ответ

1
Program a = new Program(); // a is an instance of Program 
Console.WriteLine(a.rtfCode.Text); 
DerivedClass f = new DerivedClass();// f is an instance of DerivedClass, which has nothing to do with a 
Console.WriteLine(a.rtfCode.Text); 

a и f не тот же экземпляр. Тот факт, что DerivedClass ... происходит из программы, ничего не меняет.

Вы должны заменить последнюю строку на

Console.WriteLine(f.rtfCode.Text); 
Смежные вопросы