c# - Cómo entrar dentro de Tuple estática privada, y usar numericUpDown para cambiar Math.Round
gps tuples (1)
Como descubrió, y como sospechaba pero no podía estar seguro ya que no tenía todo el código, el problema fue causado por la palabra clave static
en su método. Eliminarlo solucionó el problema.
El modificador static
se usa para indicar que el método / propiedad / campo / etc. pertenece a la clase, en lugar de a instancias de la clase. Dentro de un método o propiedad static
, no puede usar this
para referirse a la instancia ''actual'' de la clase, ya que static
métodos static
no tienen una instancia actual.
En Windows Forms, los campos creados para los distintos controles en los formularios, como su numericUpDown2
, son siempre campos de ''instancia'', es decir, no static
, por lo que pertenecen a cada instancia individual del formulario, en lugar de a la clase Form1
. De esta forma, si tiene dos Form1
diferentes abiertos al mismo tiempo, los controles correspondientes en las dos formas pueden tener valores diferentes. (Puede que solo necesite usar un Form1
en su aplicación, pero es posible que otros formularios en otras aplicaciones necesiten más de una vez). Un método static
en la clase Form1
no puede ver ninguno de estos controles porque pertenece a la clase Form1
, donde un método de instancia (es decir, no estático) pertenece a cada forma individual. Entonces, un método static
no puede ver los controles porque no puede saber en qué forma posiblemente se encuentran muchos controles.
Como usted es un principiante, el consejo que le daría si no está seguro de si necesita hacer que un método sea static
sería no convertir el método en static
. Si un método no utiliza ningún campo o método específico de la instancia, puede intentar hacerlo static
si lo desea, y ver si al hacerlo se introducen las advertencias del compilador.
esta es mi parte de código para analizar un dato NMEA ( fuente aquí Gráfico de trazado usando valores de richTextBox C # ). Esta función recupera la latitud de richTextBox y la convierte a notación decimal. Lo necesito, para trazar la característica de 4 otro módulo de GPS (para comparar la precisión de los cuatro GPS).
Este es mi problema. Quiero usar un "numericUpDown" para cambiar Math.Round (debajo tengo valor - 11). No puedo entrar a Tuple porque tengo un error (traté de hacer algo, pero no funcionó). ¿Alguien puede saber qué debo hacer?
private static Tuple<double>[] szerokosc(string[] lines)
{
return Array.ConvertAll(lines, line =>
{
string[] elems = line.Split('','');
double we = 0.01 * double.Parse(elems[3], EnglishCulture);
int stopnie = (int)we;
double minuty = ((we - stopnie) * 100) / 60;
double szerokosc_dziesietna = stopnie + minuty;
return new Tuple<double>(Math.Round(szerokosc_dziesietna, 11));
});
;
}
Quiero algo como esto:
return new Tuple<double>(Math.Round(szerokosc_dziesietna, round_value));
donde (por ejemplo):
int round_value = (int)numericUpDown1.Value;
y declaro:
numericUpDown1.Minimum = 1;
numericUpDown1.Maximum = 11;
Por favor ayuda :).