#c#
#c#
Вопрос:
Это первое, что я когда-либо делал, связанное с C #, но в прошлом я изучал lua и python. Я хотел создать приложение для игры в бинго на случай, если придут друзья, и я подумал, что попробую. В принципе, у меня есть 2 окна, 1 для вызывающего абонента bingo и одно, которое я могу отобразить на экране, чтобы игроки могли видеть. В окне вызывающего абонента bingo есть все элементы управления, но я хочу иметь возможность что-то менять в окне игроков. У меня есть кнопка, и когда я нажимаю на нее, я хочу, чтобы она делала видимым изображение и изменяла текст, говорящий «У нас есть победитель». Однако я не могу найти способ изменить вещи в другом окне: (
Вот мой код, а также несколько картинок.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace WpfApp1
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
Window window = new Window1();
private void Button_Click(object sender, RoutedEventArgs e)
{
window.Show();
PlayBingo.Visibility = Visibility.Hidden;
DeclareWinner.Visibility = Visibility.Visible;
RollNumber.Visibility = Visibility.Visible;
}
private void Declare_Winner(object sender, RoutedEventArgs e)
{
}
private void Roll_Number(object sender, RoutedEventArgs e)
{
}
}
Редактировать
public string BingoNumberChange(string bingonumber)
{
BingoNo.Content = bingonumber;
return bingonumber;
}
Я создал эту функцию в своем скрипте window1. Однако я не могу вызвать его из скрипта MainWindow???
Ответ №1:
создайте общедоступный метод в классе Window1, который принимает новый текст, и вызовите этот метод из главного окна. Вы можете сделать это для класса с несколькими окнами с интерфейсом
public class Window1 : Window
{
// skip all other code
public void SetLabelText(string str)
{
label1.Content= str;
}
}
Вызовите этот метод из главного окна нажатием кнопки
Window1 newWindowobj = new Window1():
newWindowobj.SetLabel("new text");
newWindowobj.Show();
Другой подход
IContentUpdatable.cs
public interface IContentUpdatable
{
void UpdateContent(string content);
}
Код Window1
public partial class Window1 : Window, IContentUpdatable
{
public Window1()
{
InitializeComponent();
}
public void UpdateContent(string content)
{
lblCaption.Content = content;
}
}
Код MainWindow
Window1 window1 = new Window1();
private void btnClick_Click(object sender, RoutedEventArgs e)
{
((IContentUpdatable)window1).UpdateContent("Passed from Main Window");
window1.Show();
}
Комментарии:
1. Как создать функцию?
2. Я опубликовал свою функцию выше. Вы можете понять, почему это не работает?
3. Вы не вызываетесь «BingoNumberChange» из события нажатия кнопки Mainwindow.