powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Ошибка на ровном месте...
11 сообщений из 11, страница 1 из 1
Ошибка на ровном месте...
    #32422311
M234
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
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.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;

namespace WindowsApplication45
{
	public class Form1 : System.Windows.Forms.Form
	{
		private System.Windows.Forms.RichTextBox richTextBox1;
		private System.Windows.Forms.Label label1;
		private System.Windows.Forms.ContextMenu contextMenu1;
		private System.Windows.Forms.MenuItem menuItem1;
		
		private System.ComponentModel.Container components = null;

		public Form1()
		{
		    InitializeComponent();
		}

		
		protected override void Dispose( bool disposing )
		{
			if( disposing )
			{
				if (components != null) 
				{
					components.Dispose();
				}
			}
			base.Dispose( disposing );
		}

		#region Windows Form Designer generated code
		private void InitializeComponent()
		{
			this.richTextBox1 = new System.Windows.Forms.RichTextBox();
			this.label1 = new System.Windows.Forms.Label();
			this.contextMenu1 = new System.Windows.Forms.ContextMenu();
			this.menuItem1 = new System.Windows.Forms.MenuItem();
			this.SuspendLayout();
			// 
			// richTextBox1
			// 
			this.richTextBox1.ContextMenu = this.contextMenu1;
			this.richTextBox1.Location = new System.Drawing.Point( 32 ,  32 );
			this.richTextBox1.Name =  "richTextBox1" ;
			this.richTextBox1.Size = new System.Drawing.Size( 208 ,  112 );
			this.richTextBox1.TabIndex =  0 ;
			this.richTextBox1.Text =  "richTextBox1" ;
			// 
			// label1
			// 
			this.label1.Location = new System.Drawing.Point( 32 ,  168 );
			this.label1.Name =  "label1" ;
			this.label1.Size = new System.Drawing.Size( 208 ,  40 );
			this.label1.TabIndex =  1 ;
			this.label1.Text =  "label1" ;
			// 
			// contextMenu1
			// 
			this.contextMenu1.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
																						 this.menuItem1});
			// 
			// menuItem1
			// 
			this.menuItem1.Index =  0 ;
			this.menuItem1.Text =  "Font" ;
			this.menuItem1.Click += new System.EventHandler(this.menuItem1_Click);
			// 
			// Form1
			// 
			this.AutoScaleBaseSize = new System.Drawing.Size( 5 ,  13 );
			this.ClientSize = new System.Drawing.Size( 292 ,  266 );
			this.Controls.AddRange(new System.Windows.Forms.Control[] {
																		  this.label1,
																		  this.richTextBox1});
			this.Name =  "Form1" ;
			this.Text =  "Form1" ;
			this.ResumeLayout(false);

		}
		#endregion

		[STAThread]
		static void Main() 
		{
			Application.Run(new Form1());
		}

		private void menuItem1_Click(object sender, System.EventArgs e)
		{
			label1.Text=contextMenu1.SourceControl.Name;
		}
	}
}



Вот этот примитивный код выдаёт ошибку на ровном месте.
Если вместо RichTextBox'a использовать pictureBox, то ошибки нет.
Почему?

П.С. Вы можете код скомпилировать (он полный, только скопировать и вставить надо)

Я сделал всё что мог, кто может пусть сделает лучше.
...
Рейтинг: 0 / 0
Ошибка на ровном месте...
    #32422363
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Совет: если ты пишешь:
авторusing System.Windows.Forms;

то тогда не нужно полностью писать здесь:
авторprivate System.Windows.Forms.RichTextBox richTextBox1;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.ContextMenu contextMenu1;



Иначе какой смысл? Так ты только загрождаешь код.

И this нет смысла использовать без необходимости, есть смысл скажем когда есть противоречие между локальной переменной и переменной класса.


Это не наезд, просто как совет дружеский.


P.S. Опять же другим легче код анализировать.
...
Рейтинг: 0 / 0
Ошибка на ровном месте...
    #32422413
M234
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Претензии к дяде Билли пжалста. VS.NET код генерил я только контролы на форму накидал :).

А анализу подлежит только одна строчка

private void menuItem1_Click(object sender, System.EventArgs e)
{
вот эта label1.Text=contextMenu1.SourceControl.Name;
}


А код я полностью привел, чтобы вы его скомпилить могли.
А this не такая уж и плохая штука - пишешь его и можно не задумываться как ты входящие переменные обозвал.

Я сделал всё что мог, кто может пусть сделает лучше.
...
Рейтинг: 0 / 0
Ошибка на ровном месте...
    #32422419
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторVS.NET код генерил...

Да, прискорбно.
...
Рейтинг: 0 / 0
Ошибка на ровном месте...
    #32422455
M234
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, а как на счёт по существу вопроса?
Почему contextMenu1.SourceControl для RichTextBox'a не отрабатывет?

Я сделал всё что мог, кто может пусть сделает лучше.
...
Рейтинг: 0 / 0
Ошибка на ровном месте...
    #32422768
Фотография hDrummer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softbuilder@inbox.ru Иначе какой смысл? Так ты только загрождаешь код.
Microsoft перестраховывается как всегда.
...
Рейтинг: 0 / 0
Ошибка на ровном месте...
    #32422794
Фотография hDrummer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а по существу вопроса -

contextMenu1.SourceControl находится в null, поэтому лезет ошибка.
Хотя если посмотреть помощь, то

You can use the SourceControl property to determine which control last displayed the shortcut menu in order to perform tasks specific to the control or to modify the shortcut menu displayed for the control.

т.е. такого быть не должно, однако имеем факт на лице :(

Подробнее надо рыть дальше и глубже.
...
Рейтинг: 0 / 0
Ошибка на ровном месте...
    #32422827
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор=hDrummer softbuilder@inbox.ru
Иначе какой смысл? Так ты только загрождаешь код.

Microsoft перестраховывается как всегда.

Прямо как в анекдоте про монашку, зачем на свечку презерватив, да так на всякий случай, мало ли
...
Рейтинг: 0 / 0
Ошибка на ровном месте...
    #32423103
Фотография hDrummer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2softbuilder@inbox.ru
ты ещё хранимые процедуры сгенеренные vs.net не видел :)
...
Рейтинг: 0 / 0
Ошибка на ровном месте...
    #32423122
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hDrummer, ты с Украины что-ли? Что это у тебя там за сало на сковородке?
...
Рейтинг: 0 / 0
Ошибка на ровном месте...
    #32423184
Фотография hDrummer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторhDrummer, ты с Украины что-ли?
Нет, я с Мадагаскара, готовил себе завтрак из пойманного джависта ;)
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Ошибка на ровном месте...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]