2012-03-29 3 views
0

Der folgende Code funktioniert:Delegierter Func <> in Windows Form-Anwendung C#

class Program 
{ 
    static void Main(string[] args) 
    { 
     List<Func<string, string>> mylist = new List<Func<string, string>>(); 

     mylist.Add(Navigation); 
     mylist.Add(Tactic); 
     Func<string, string> GameOfThrones = mylist[0]; 
     string name = "NONE"; 
     Console.WriteLine(GameOfThrones(name)); 
     Console.ReadLine(); 
    } 
    private static string Navigation(string tmp) { return "Navigation"; } 
    private static string Tactic(string tmp) { return "Tactic"; } 
} 

aber ich wünsche, diese Anwendung mit einer Windows-Formular verwenden, nicht trösten.

habe ich versucht, die folgenden, aber ich kann es nicht funktionieren:

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
    } 


private void button1_Click(object sender, EventArgs e) 
{ 
    List<Func<string, string>> mylist = new List<Func<string, string>>(); 

    mylist.Add(Navigation); 
    mylist.Add(Tactic); 
    Func<string, string> SkillCall = mylist[0]; 
    string name ="NONE"; 
    TextBox1.Text = SkillCall(name); 
}  
     private static string Navigation(string tmp) { return "Navigation"; } 
     private static string Tactic(string tmp) { return "Tactic"; } 
} 

Fehler 8 ‚mylist‘ ist ein ‚Feld‘, sondern wie ein ‚Typ‘

+2

Welche Zeile gibt diesen Fehler? – BlackBear

+3

Der Code ist ungerade, aber gut. Ich vermute, Sie haben irgendwo in Ihrer lokalen Kopie eine überflüssige Klammer oder ein Semikolon. –

+0

Lösung .. Offenbar ist VS zufrieden mit mir alle den Code in der Klasse kopieren und in eine neue dublicate Klasse einfügen .. Wenn jemand dies ohne Verwendung erklären kann: „Das ist M $“, dann werden Sie das gelöst bekommen Kennzeichen. –

Antwort

0

Angenommen, Sie verwendet sind auf C# 3.5 + (und haben dieses Framework angesprochen) dann ... Es ist nichts falsch mit diesem Code - der Fehler muss woanders sein, oder Sie haben es für die Kürze oder was auch immer geändert. Bitte listen Sie den vorhandenen Code auf oder gehen Sie durch und sehen Sie, wo Ihr Fehler liegt.

2

Windows Forms-Version Verwendung eines partial class macht den Formulardesigner (in Visual Studio) zu ermöglichen, den Code zu bearbeiten (InitializeComponent Funktion, etc.), wie Sie das Formular entwerfen, ohne mit Ihrem eigenen Code durcheinander und Handler (wie button1_Click).

Gibt es eine Chance, dass die andere Klassendefinition (wahrscheinlich in der Form1.Designer.cs-Datei) ein Feld namens Mylist enthält?

Verwandte Themen