Jag fick väldig god hjälp för några dagar sedan då jag vill ha ut värden från en usercontroll till min huvudform. Nu behöver jag göra tvärt om, skicka värden ifrån formen till usercontrollen. Ifall formen bara ska skicka värdet till controllen räcker det med att du gör en publik property på controllen. Tack Tomas för att du försöker, men jag åker på patrull. Njäae din usercontrol-klass definieras som Tack Tomas, nu blev det bra.Skicka värden från form till usercontroll
Jag trodde att jag skulle kunna använda mig av samma teknik, men jag åker på patrull.
<code>
// i formen
// min delegate
public delegate void saveListviewContentHandler(object sender, EventArgs e);
// event
public event saveListviewContentHandler saveListviewContent;
//property
public string SaveListview
{
get
{
return (string)saveListview;
}
set
{
saveListview= (string)value;
}
}
// sen försöker jag att stoppa in lite värden, den är i en class där jag får fram ett filnamn.
saveListview = nyttFilnamn;
saveListviewContent(this, EventArgs.Empty);
//och här smäller det
Object reference not set to an instance of an object
</code>
Jag kan inte heller se den ifrån min usercontroll...
Vad gör jag för fel här???Sv: Skicka värden från form till usercontroll
public class MyControl
{
private string _fileName;
public string FileName
{
get
{
return _fileName;
}
set
{
_fileName = value;
}
}
public void ProcessFile()
{
DoSomeStuff(FileName);
}
private void DoSomeStuff(string file)
{
// TODO: implementation
}
}
public partial class MyForm
{
private MyControl _myControl;
public void Form_Load()
{
_myControl = new MyControl();
}
public void Command2_Click()
{
_myControl.FileName = "Kalle kula.txt";
_myControl.ProcessFile();
}
}
Du *kan* i och för sig vända på steken och deklarera propertyn i din form och sedan få den att skicka ett event till usercontrolen. Men detta känns som ett mer naturligt sätt att sköta kommunikationen i riktningen form -> subcontrol.
Sv:Skicka värden från form till usercontroll
I min usercontroll så ser det ut så här:
<code>
namespace MusicTranspose_3.Transposer
//och sen..
public Transposer()
//så när jag i min form lägger till
private Transposer _myControl;
//och
_myControl = new Transposer();
//så blir det error:
MusicTranspose_3.Transposer' is a 'namespace' but is used like a 'type'
</code>
Om jag inte är helt fel ute så blir väl namespace också samma namn som classen???Sv: Skicka värden från form till usercontroll
MusicTranspose_3.Transposer.Transposer
Så vill du använda den i din form måste du antingen lägga till en using för att få in namespacet i formens scope
using MusicTranspose_3.Transposer;
/../
var foo = new Transposer();
eller lägga formen och controlen i samma scope:
namespace MusicTranspose_3.Transposer
class MyForm
/../
_myControl = new Transposer();
eller knacka in hela sökvägen vid varje referens
namespace Whatever.Whereever
class MyForm
/.../
private MusicTranspose_3.Transposer.Transposer _myControl;
/.../
_myControl = new MusicTranspose_3.Transposer.Transposer();
Sv:Skicka värden från form till usercontroll
Jag fick använda mig av alternativ tre, men det blev toppen.