1 / 0 / 1
Регистрация: 02.02.2015
Сообщений: 79

Подскажите почему не могу вызвать метод экземпляра, добавленный в класс, наследованный от Button?

19.03.2021, 06:36. Показов 1364. Ответов 5

Студворк — интернет-сервис помощи студентам
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
MainForm.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Speech.Synthesis;
 
namespace KeyApp
{
    public partial class MainForm : Form
    {
        public MainForm()
        {
            InitializeComponent();
            InitializeKeyForm();
        }
 
        public void InitializeKeyForm()
        {
            KeyClass keyForm1 = new KeyClass();
            this.Controls.Add(this.keyForm1);            
            this.keyForm1.Click += new System.EventHandler(this.keyForm1_Click);            
        }        
 
        private void MainForm_KeyPress(object sender, KeyPressEventArgs e)
        {
            keyForm1.Key_press1();//sender, e);
            
            //button1.Text = mainRow[Key.newKey];
 
            //MessageBox.Show("");
        }
    }
}
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection.Emit;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace KeyApp
{
    static class Program
    {       
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new MainForm());
        }
    }
 
    public class KeyClass : System.Windows.Forms.Button
    {        
        public KeyClass()
        {
            this.Font = new System.Drawing.Font("Arial", 30F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
            this.Location = new System.Drawing.Point(100, 100);
            this.MaximumSize = new System.Drawing.Size(100, 100);
            this.MinimumSize = new System.Drawing.Size(20, 20);
            this.Name = "Key";
            this.Size = new System.Drawing.Size(50, 50);
            this.TabIndex = 0;
            //this.Visible = false;      
            this.random = new Random();
            //string[] mainRow = { "ф", "ы", "в", "а", "п", "р", "о", "л", "д", "ж", "э" };
            currentKey = random.Next(mainRow.Length);
            this.Text = mainRow[currentKey];
        }     
 
        public string[] alphavit = {"а", "б", "в", "г", "д", "е", "ё", "ж", "з", "и", "й", "к", "л", "м", "н", "о", "п", "р", "с", "т", "у", "ф",
                                "х", "ц", "ч", "ш", "щ", "ъ", "ы", "ь", "э", "ю", "я"};
        public string[] mainRow = { "ф", "ы", "в", "а", "п", "р", "о", "л", "д", "ж", "э" };
        public Int32 oldKey = 0;
        public Int32 currentKey = 0;
        public Random random;        
 
        public void Key_press1()//object sender, KeyPressEventArgs e)
        {
            /*if (this.Text == e.KeyChar.ToString())
            {
                int num = this.random.Next(this.mainRow.Length);
                this.Text = this.mainRow[num];
            }*/
        }
    }
}
Выдаёт ошибку
ОшибкаCS1061"Button" не содержит определения "Key_press1", и не удалось найти доступный метод расширения "Key_press1", принимающий тип "Button" в качестве первого аргумента (возможно, пропущена директива using или ссылка на сборку).

Методы поля наследованные отлично вызываются, а мой добавленный как будто не существует.
Почему компилятор воспринимает keyForm1 как Button?

Они же в одном намспайсе и должны видеть друг друга.
Сначала подумал что наследование не работает из-за того, что Button не публичный, но он public
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.03.2021, 06:36
Ответы с готовыми решениями:

Создать шаблонный класс и наследованный от этого класса метод
Создать шаблонный класс и наследованный от этого класса метод(естественно шаблонный), реализовать его в int main(){} через INT и Double.

Как создать событие или вызвать метод при нажатии на экземпляр объекта (Button)?
List<Button> but = new List<Button>(); private void button1_Click(object sender, EventArgs e) { Button p...

Почему при вызове метода у экземпляра класса он сначала ищет у экземпляра
Всем привет, после прочтения Лутца про ООП появился такой вопрос почему при вызове метода у экземпляра класса он сначала ищет у экземпляра,...

5
 Аватар для IamRain
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,234
19.03.2021, 06:57
Цитата Сообщение от releyshic Посмотреть сообщение
KeyClass keyForm1 = new KeyClass();
Переменная keyForm1 - локальная переменная, объявленная в методе, она не будет видна в других методах.
Сделайте ее членом формы, и инициализируйте:
C#
1
2
3
4
5
6
7
private KeyClass keyForm1;
public void InitializeKeyForm()
        {
            keyForm1 = new KeyClass();
            this.Controls.Add(this.keyForm1);            
            this.keyForm1.Click += new System.EventHandler(this.keyForm1_Click);            
        }
0
1 / 0 / 1
Регистрация: 02.02.2015
Сообщений: 79
19.03.2021, 07:49  [ТС]
Так и думал, что чтото простое. Я почемуто думал что на экземпляры объектов области видимости не распространяются
Но не помогло, ругается на "keyForm1"
CS0229 Неоднозначность между "MainForm.keyForm1" и "MainForm.keyForm1" KeyApp

Может весь проект приложить?
0
 Аватар для IamRain
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,234
19.03.2021, 08:50
Цитата Сообщение от releyshic Посмотреть сообщение
Может весь проект приложить?
Прикладывайте.

Цитата Сообщение от releyshic Посмотреть сообщение
Так и думал, что чтото простое.
Дело в том, что ваше описание ошибки не соответствует предоставленному коду.
0
1 / 0 / 1
Регистрация: 02.02.2015
Сообщений: 79
19.03.2021, 10:28  [ТС]
Прикладываю
Вложения
Тип файла: rar KeyApp.rar (39.2 Кб, 3 просмотров)
0
 Аватар для EveKS
601 / 485 / 185
Регистрация: 19.04.2016
Сообщений: 1,885
19.03.2021, 13:02
releyshic,
C#
1
2
           KeyClass keyForm1 = new KeyClass();
            this.Controls.Add(this.keyForm1);
Причем тут keyForm1 и this.keyForm1?
Что там в this.keyForm1?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.03.2021, 13:02
Помогаю со студенческими работами здесь

Не могу вызвать метод
Ребят, приветствую! Хочу реализовать систему вывода комментариев к постам деревом. Вот первый кусок кода, находящийся в классе Post....

Не могу вызвать метод
#include "pch.h" #include <iostream> #include <string> #include <fstream> using namespace std; class reis { public: int...

Progress Button, как вызвать метод, а после закончить Progress?
Есть кнопка с прогрессом, по ее клику вызывается это: private void sendProgress (final LinearProgressButton button){ ...

Dll не могу вызвать метод
Решил попробывать написать юнит тест на Visual Studio 2015. Пишу по этой линке: https://msdn.microsoft.com/en-us/library/hh598953.aspx ...

Почему не получается вызвать метод rowCount() в PDO?
$phone = "11111"; $dbhost = "127.0.0.1"; $login = "red"; $email = "mail@mail.ru"; $dbuser = "dbuser"; $dbpass = "password"; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

Новые блоги и статьи
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определенном условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru