對於C#和OOP來說相當新手我在範圍和訪問方面遇到了一些新手問題,其中之一是這樣的:當主窗體加載類的實例時,Doc創建並且構造函數打開Word文檔並創建文檔中所有圖像的列表。在列表中的第一圖像被顯示在PictureBox,像這樣:由兄弟控制實例化的訪問對象
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
}
public class Doc {
public List<Image> images = new List<Image>();
public Doc(string path) {
// Open Word document, create list of images
}
}
private void Form1_Load(object sender, EventArgs e) {
Doc doc = new Doc("C:\\lorem_ipsum.doc");
pictureBox1.Image = doc.images[0];
}
private void numericUpDown1_ValueChanged(object sender, EventArgs e) {
pictureBox1.Image = doc.images[numericUpDown1.Value];
}
}
還有哪些應該被用來顯示不同的圖像NumericUpDown控件,這就是問題所在。上例中的最後一段代碼不起作用,但我希望它能說明我想要做什麼。
對於這個問題(以及其中一個控件應該能夠訪問由其他控件創建的對象的類似問題),最佳實踐解決方案是什麼?我也試圖通過爲Doc類創建一個方法來解決它,但是卻沒有從那裏訪問圖片框。
啊,那很簡單。感謝大家(除了downvoter)。這種方法是否合理地接近最佳實踐,或者恰恰是讓我的糟糕設計發揮作用的最簡單方法? :) – linurb 2015-01-20 19:57:27
@linurb - 這不是「最佳做法」。這是C#中的作用域的工作原理。 – Icemanind 2015-01-20 21:04:18
@linurb我想指出的是,有人可能會認爲'Doc'(和'Form1')類本身的命名很差,可能不應該是Form1類中的嵌套類。如果你想/需要代碼審查,你應該[檢查代碼審查StackExchange網站](http://codereview.stackexchange.com/)。 – Anthony 2015-01-20 23:30:55