2016-01-28 5 views
0

У меня есть 2 .cs файла (A, B).Контроль формы доступа из другого класса в другом файле

В моем файле A.cs это открытый класс A. Я хочу использовать элемент управления (gridview) в открытом классе B, который находится в B.designer.cs. Можно ли сделать это без наследования класса B в A?

Я знаю, что мне, вероятно, нужно свойство и создать новый экземпляр класса A в классе B. Это то, что у меня есть до сих пор.

Это в B.cs. Я не уверен, где/как сделать свойство.

Это, как я определяю GridView:
общественного DevExpress.XtraGrid.Views.Grid.GridView GridView

и это, как я пишу текст в нем: this.gridView1.OptionsFind.FindNullPrompt = «привет»

private void treeView_NodeMouseClick(object sender, System.EventArgs e) 
{ 
    A gridview = new A(); 
    A.gridview = "hello"; 
} 
+0

У вас есть 2 класса, а класс 'B' имеет общедоступное текстовое поле? Код для класса B поможет. –

+0

Не совсем понятно, что вы пытаетесь сделать. Если одному объекту нужно ссылаться на свойство в существующем экземпляре другого объекта, тогда ему нужна ссылка на этот экземпляр. – David

+0

Например, вы можете ввести экземпляр класса A в конструктор B, чтобы получить эту ссылку. Но что еще более важно, расскажите нам, как связаны A и B. Существуют ли обе формы? Существует ли основная форма контейнера? Если да, то A и B могут быть пользовательскими элементами управления, сидящими внутри основной формы с экземплярами A и B.Затем вы можете настроить события, чтобы щелчок treeView_node мог установить событие в A для изменения текстового значения текстового поля. – rfolt

ответ

0

Вам нужен экземпляр в своем классе B.

Вы можете получить его, как это:

public class B 
{ 
    private A theA; 
    public B(A theA) 
    { 
     this.theA = theA; 
    } 

    private void treeView_NodeMouseClick(object sender, System.EventArgs e) 
    { 
     theA.textbox = "hello"; 
    } 
} 

Теперь, когда вы создаете экземпляр класса B, вы пишете его вот так.

B b = new b(new A()); 
+0

Как я могу убедиться, что я указываю в текстовом поле, которое я хочу написать «Привет»? – Annie123

+0

@ Annie123 Когда вы добавляете текстовое поле в класс A, оно получает имя. Когда вы говорите theA.textbox в классе B, убедитесь, что «.textbox» - это имя текстового поля в классе A. Имя текстового поля, которое вы хотите записать. –

+0

, так что A - это просто случайная величина, но. «Textbox» - это имя текстового поля – Annie123

0
private void treeView_NodeMouseClick(object sender, System.EventArgs e) 
{ 
    A gridview = new A(); 
    A.gridview = "hello"; 
} 

В этой части кода,

Во-первых, вы создаете новый экземпляр под названием "GridView", но затем использовать

A.gridview = " hello "

, чтобы попытаться получить доступ к сетке, которая должна быть фактически

gridview.gridview = "hello";

Во-вторых, создав новый экземпляр A и изменив значение своего поля «gridview» (который, я думаю, может быть текстовым полем в соответствии с вашим кодом), он не будет иметь никакого эффекта для интерфейса, поскольку это не A, которое вы хотите использовать.

Вместо этого, вероятно, следует: В классе В, что-то вроде,

Public void UpdateAGridview(A yourA) 
{ 
    yourA.gridview = "hello"; 
    //side note: setting a string value to a gridview, is this correct? 
} 

Здесь вы получите ссылку на А вы хотите, чтобы взаимодействовать с, так что «GridView» в А будет тот, который вы хотите обновить.

Смежные вопросы