Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Ошибка на ровном месте... / 11 сообщений из 11, страница 1 из 1
26.02.2004, 13:00
    #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
26.02.2004, 13:21
    #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
26.02.2004, 13:38
    #32422413
M234
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка на ровном месте...
Претензии к дяде Билли пжалста. VS.NET код генерил я только контролы на форму накидал :).

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

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


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

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

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

Я сделал всё что мог, кто может пусть сделает лучше.
...
Рейтинг: 0 / 0
26.02.2004, 15:52
    #32422768
hDrummer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка на ровном месте...
softbuilder@inbox.ru Иначе какой смысл? Так ты только загрождаешь код.
Microsoft перестраховывается как всегда.
...
Рейтинг: 0 / 0
26.02.2004, 15:58
    #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
26.02.2004, 16:12
    #32422827
softy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка на ровном месте...
автор=hDrummer softbuilder@inbox.ru
Иначе какой смысл? Так ты только загрождаешь код.

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

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


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