Я пытаюсь передать значение «тест» из класса WorkspaceNoteUpdateComponent и в методе noteUpdateControl_AddNoteClicked перейти к другому классу NoteUpdateUserControl и методу buttonAdd_Click. По какой-то причине, однако, кажется, что значение «тест» в первом методе никогда не пропускает его. Что я делаю не так?Передавать значение из внутреннего метода в другой класс
Класс WorkspaceNoteUpdateComponent методом noteUpdateControl_AddNoteClicked
public class WorkspaceNoteUpdateComponent : IWorkspaceComponent2
{
private IRecordContext _recContext;
public static string CustAddrCity = "SOMETHING";
public Control GetControl()
{
NoteUpdateUserControl noteUpdateControl = new NoteUpdateUserControl();
noteUpdateControl.AddNoteClicked += new NoteUpdateUserControl.AddNoteHandler(noteUpdateControl_AddNoteClicked);
return noteUpdateControl;
}
public string noteUpdateControl_AddNoteClicked(ref string CustAddrCity)
{
IContact contactRecord = _recContext.GetWorkspaceRecord(RightNow.AddIns.Common.WorkspaceRecordType.Contact) as IContact;
CustAddrCity = "test";
_recContext.RefreshWorkspace();
return CustAddrCity;
}
}
класса NoteUpdateUserControl с методом buttonAdd_Click
public partial class NoteUpdateUserControl : UserControl
{
public delegate string AddNoteHandler(ref string custAddrCity);
public event AddNoteHandler AddNoteClicked;
string _boxtext = WorkspaceNoteUpdateComponent.CustAddrCity;
public NoteUpdateUserControl()
{
InitializeComponent();
}
private void buttonAdd_Click(object sender, EventArgs e)
{
if (AddNoteClicked != null)
{
MessageBox.Show(_boxtext);
}
}
*** UPDATE удалены только для чтения из строки _boxtext, как это не было намеченная часть кода ** **
'_boxtext' в вашем пользовательском элементе управления не является ссылкой на' CustAddrCity' в классе Workspace, его копией. Вы пометили его как readonly и только инициализировали его при построении объекта, так или иначе вам нужно физически обновить это значение. –
Кроме того, это несчастливый побочный эффект (неверный) - использование имен переменных. 'CustAddrCity' внутри метода не совпадает с' CustAddrCity' вне метода, компилятор предполагает, что вы хотите локальную копию внутри метода, и он не устанавливает значение в классе. Я думаю, вы, возможно, захотите прочитать, что такое 'static',' readonly' и 'ref'. –
Рон, спасибо за вход, я обновил свой пост, так как часть readonly не была предназначена. Это была ошибка. Я понимаю свою ошибку со статической частью в объявлении CustAddrCity. – booksguy