有兩種形式,MainForm 和 GraphicsForm。在 MainForm 中,有“新建”和“保存”、“打開”按鈕。單擊“新建”時,會創建一個 GraphicsForm(多次單擊“新建”時會創建多個 GraphicsForm)。
問題是,當創建了多個 GraphicsForms,而用戶只想將內容保存在其中一個或打開一個內容檔案到其中一個時,如何實作呢?
MainForm.cs
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
}
private ToolStripMenuItem _winMenuItem = new ToolStripMenuItem();
private GraphicsForm _graphicsForm;
private int _counter = 1;
private ContentDoc _contentDoc = new ContentDoc();
private void New_Click(objec sender, EventArgs e)
{
_winMenuItem.Name = "Win";
_winMenuItem.Text = "Windows";
int item = MainMenuStrip.Items.IndexOf(_winMenuItem);
if (item == -1)
{
MainMenuStrip.Items.Add(_winMenuItem);
MainMenuStrip.MdiWindowListItem = _winMenuItem;
}
_graphicsForm = new GraphicsForm(_contentDoc);
_graphicsForm.Name = string.Concat("Win_", _counter.ToString());
_graphicsForm.Text = _graphicsForm.Name;
_graphicsForm.MdiParent = this;
_graphicsForm.Show();
_graphicsForm.WindowState = FormWindowState.Maximized;
_counter ;
}
private void Save_Click(object sender, EventArgs e)
{
... // here
}
private void Open_Click(object sender, EventArgs e)
{
... // here
}
}
GraphicsForm.cs
public partial class GraphicsForm : Form
{
//ContentDoc is a class to manage all the graphics drawn by the user in the form.
private ContentDoc _contentDoc = new ContentDoc();
public GraphicsForm(ContentDoc contentDoc)
{
InitializeComponent();
_contentDoc = contentDoc;
}
private Canvas_MouseDown()
{
}
private Canvas_Paint()
{
}
...
uj5u.com熱心網友回復:
父表單有一個ActiveMdiChild屬性,因此您可以使用 訪問當前選擇的GraphicsForm實體:
var activeGraphicsForm = ActiveMdiChild as GraphicsForm;
您可能會使用其他變體,例如模式匹配,具體取決于具體細節和您的偏好。
然后,您可以將保存邏輯放入公共方法中GraphicsForm并從父表單中呼叫它。或者,您可以將保存邏輯放在父表單中,并通過GraphicsForm.
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/522134.html
標籤:C#。网表格
上一篇:如何在面板頂部顯示MonthCalendar控制元件?
下一篇:我想使用GDI填充正方形的顏色
