Alterando valores de outro formulário de um formulário separado (solução não está funcionando)
povos. Hoje estou tentando mudar a imagem de fundo de um painel de um formulário separado. Eu olhei alguns S.O. perguntas e todos eles disseram para criar uma nova variável de formulário e alterar seus valores. Então, eu fiz isso e não recebo nenhum erro, mas também não obtenho nenhuma alteração no plano de fundo. Aqui está o que eu quero dizer: (esta é a forma principal que estou tentando mudar)
public static void changeGridSize(int newSize)
{
Form_Main frm = new Form_Main();
switch (newSize)
{
case 16:
frm.panelBoard.BackgroundImage = Properties.Resources.grid_16;
break;
case 32:
frm.panelBoard.BackgroundImage = Properties.Resources.grid_32;
break;
case 64:
frm.panelBoard.BackgroundImage = Properties.Resources.grid_64;
break;
case 128:
frm.panelBoard.BackgroundImage = Properties.Resources.grid_128;
break;
}
}
E aqui está a outra forma:
int newSize = 16;
Form_Main.changeGridSize(newSize);
É mais provável que seja algo estúpido, mas estou perplexo com este.
EDITAR
Aqui os arquivos
Forma principal
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace LWJSGL_Level_Editor
{
public partial class Form_Main : Form
{
public static int gridSize = 32;
public Image pbg
{
get { return this.panelBoard.BackgroundImage; }
set { this.panelBoard.BackgroundImage = value; }
}
public String curTile = "";
public Form_Main()
{
InitializeComponent();
}
private void Form_Main_Load(object sender, EventArgs e)
{
}
private void buttonTile_Click(object sender, EventArgs e)
{
//show file dialog
openFileDialogTile.ShowDialog();
}
private void openFileDialogTile_FileOk(object sender, CancelEventArgs e)
{
curTile = openFileDialogTile.FileName;
Msg(curTile);
}
public void Msg(String str)
{
MessageBox.Show(str);
}
private void buttonSettings_Click(object sender, EventArgs e)
{
Form_Settings fs = new Form_Settings();
fs.ShowDialog();
}
public void changeGridSize(int newSize)
{
switch (newSize)
{
case 16:
this.panelBoard.BackgroundImage = Properties.Resources.grid_16;
break;
case 32:
this.panelBoard.BackgroundImage = Properties.Resources.grid_32;
break;
case 64:
this.panelBoard.BackgroundImage = Properties.Resources.grid_64;
break;
case 128:
this.panelBoard.BackgroundImage = Properties.Resources.grid_16;
break;
}
}
}
}
Outra forma
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace LWJSGL_Level_Editor
{
public partial class Form_Settings : Form
{
int newSize;
public Form_Settings()
{
InitializeComponent();
}
private void buttonSaveSettings_Click(object sender, EventArgs e)
{
//save settings
Form_Main.gridSize = newSize;
Form_Main frm = new Form_Main();
frm.changeGridSize(newSize);
this.Close();
}
private void radioButtonGridSize16_CheckedChanged(object sender, EventArgs e)
{
newSize = 16;
}
private void radioButtonGridSize32_CheckedChanged(object sender, EventArgs e)
{
newSize = 32;
}
private void radioButtonGridSize64_CheckedChanged(object sender, EventArgs e)
{
newSize = 64;
}
private void radioButtonGridSize128_CheckedChanged(object sender, EventArgs e)
{
newSize = 128;
}
private void Form_Settings_Load(object sender, EventArgs e)
{
switch (Form_Main.gridSize)
{
case 16:
this.radioButtonGridSize16.Checked = true;
break;
case 32:
this.radioButtonGridSize32.Checked = true;
break;
case 64:
this.radioButtonGridSize64.Checked = true;
break;
case 128:
this.radioButtonGridSize128.Checked = true;
break;
}
}
}
}
O método de extensão deve ser definido no erro de classe estática não genérico que está ocorrendo na linha 13 do formulário principal.