Ho poi scoperto che si possono anche usare le classi parziali e ho scritto il seguente codice ma non funziona:
MainWindow.xaml.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace WpfApplication1
{
/// <summary>
/// Logica di interazione per MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
lunghezza.KeyUp += new KeyEventHandler(calcoloconinvio);
neve.KeyUp += new KeyEventHandler(calcoloconinvio);
permanente.KeyUp += new KeyEventHandler(calcoloconinvio);
scelta.KeyUp += new KeyEventHandler(calcoloconinvio);
}
void calcoloconinvio(object sender, KeyEventArgs e)
{
if (e.Key == Key.Return)
{
METODO(lunghezza, neve, permanente, scelta);
}
}
partial void preventivo_Click(object sender, RoutedEventArgs e)
{
METODO(lunghezza, neve, permanente, scelta);
}
private void METODO(TextBox lunghezza, TextBox neve, TextBox prevenivo, ComboBox scelta)
{
double L = 0;
double Cn = 0;
double Cp = 0;
double COSTO;
double H = 0;
double psi_correttivo;
int r_abaco;
int c_abaco;
int errore = 0;
try
{
L = double.Parse(lunghezza.Text);
Cn = double.Parse(neve.Text);
Cp = double.Parse(permanente.Text);
}
catch (Exception)
{
MessageBox.Show("I dati di input sono sbagliati! Verificare di non aver inserito lettere, spazi o numeri
troppo grandi.", "ERRORE!", MessageBoxButton.OK, MessageBoxImage.Stop);
errore = 1;
}
ComboBoxItem Item = (ComboBoxItem)scelta.SelectedItem;
if (Item.Content.ToString() == "<= 1000 m s.l.m.")
{
psi_correttivo = 1;
}
else
{
psi_correttivo = 0.7/0.5;
}
double Ctot = (Cn*psi_correttivo + Cp) ; //Carico neve + permanente non fattorizzati
//double[,] abaco = {
//{ 30 , 0 , 0 , 0 },
//{ 40 , 5 , 3*0.7/0.5+3 , 999 },
//{ 40 , 5 , 6 , 99 },
//{ 50 , 5 , 6 , 6 },
//{ 50 , 5 , 6 , 6 },
//{ 50 , 5 , 6 , 3 },
//{ 50 , 5 , 6 , 6 }};
r_abaco = abaco.GetLength(0);
c_abaco = abaco.GetLength(1);
double COSTOmax = 0;
for (int i = 0; i < r_abaco; i++)
{
if (abaco[i, 3] > COSTOmax)
{
COSTOmax = abaco[i, 3];
}
}
double Hi = 0;
double COSTOi = 0;
int Variabile_Test = 1;
if (errore == 0)
{
COSTO = COSTOmax;
for (int i = 0; i < r_abaco; i++)
{
if (abaco[i, 1] == L && abaco[i, 2] == Ctot)
{
Hi = abaco[i, 0];
COSTOi = abaco[i, c_abaco - 1];
if (COSTO >= COSTOi)
{
COSTO = COSTOi;
H = Hi;
altezza.Text = H.ToString("0");
costo.Text = COSTO.ToString("0.00");
Variabile_Test = 0;
}
}
}
}
if (Variabile_Test == 1 && errore != 1)
{
MessageBox.Show("Lunghezza tegolo e carichi inaccettabili oppure valori scelti fuori range dal dominio
analizzato.", "ERRORE!", MessageBoxButton.OK, MessageBoxImage.Stop);
altezza.Text = "Altezza non valutabile!";
costo.Text = "Prevetivo non calcolabile!";
}
if (errore == 1)
{
altezza.Text = "Errore nei dati di input!";
costo.Text = "Errore nei dati di input!";
}
//costo.SelectionStart = 0;
//costo.SelectionLength = costo.Text.Length;
//costo.Focus();
//MessageBox.Show(COSTO.ToString());
}
private void scelta_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
}
private void button1_Click(object sender, RoutedEventArgs e)
{
Application.Current.Shutdown();
}
private void textBox1_TextChanged(object sender, TextChangedEventArgs e)
{
}
private void neve_TextChanged(object sender, TextChangedEventArgs e)
{
}
private void permanente_TextChanged(object sender, TextChangedEventArgs e)
{
}
private void altezza_TextChanged(object sender, TextChangedEventArgs e)
{
}
private void costo_TextChanged(object sender, TextChangedEventArgs e)
{
}
}
}
variabili.cs
partial class VariabiliGlobali
{
double[,] abaco = {
{ 30 , 0 , 0 , 0 },
{ 40 , 5 , 3*0.7/0.5+3 , 999 },
{ 40 , 5 , 6 , 99 },
{ 50 , 5 , 6 , 6 },
{ 50 , 5 , 6 , 6 },
{ 50 , 5 , 6 , 3 },
{ 50 , 5 , 6 , 6 }};
}
Nessuno mi può aiutare? Nessuno di voi divide il codice? Non ci credo!