|
S. Senthil Kumar wrote: I think you misread the question.
To be honest, I wrote it off as the code was illegible, and expected to be able to answer it better once the code was properly posted.
S. Senthil Kumar wrote: Huh? I thought reference counting is solely for the purpose of garbage collection. It definitely is *not* used to implement copy on write semantics.
Perhaps I need to read my .NET framework book again, because I was sure that is what it said happens.
Christian Graus - Microsoft MVP - C++
|
|
|
|
|
Depends on how the SomeArray property has been implemented. If it's like
public int[] SomeArray
{
get { return someArray; }
}
then no, no copies of the array are created, because array is a reference type. So only the reference to the array is copied.
However, this means that the client can do something like
int []arr = obj.SomeArray;
arr[0] = arr[1] = 0;
and this will result in the original array also being updated.
In case the programmer didn't want that to happen, he/she will code the SomeArray property as
public int [] SomeArray()
{
return (int[] )((ICloneable)someArray).Clone();
}
in which case, everytime someone does obj.SomeArray[i] , a new copy of the array is created.
In fact it's not recommended to have properties that return arrays for precisely this reason. According to MSDN[^],
Use a method when:
...
* The member returns an array. Properties that return arrays can be very misleading.
Usually it is necessary to return a copy of the internal array so that the user cannot change internal state.
This, coupled with the fact that a user can easily assume it is an indexed property, leads to inefficient code.
In the following code example, each call to the Methods property creates a copy of the array.
Regards
Senthil
_____________________________
My Blog | My Articles | WinMacro
|
|
|
|
|
i understand now, so only the reference is copied.
thanks
|
|
|
|
|
Hi, I've read several articles about drag&drop and know how to d&d text from one textbox to another.
But if I catch the MouseDown event, I can't select text or if I select text it becomes unselected if I try to drag it.
My target is to select and drag and drop text like in Visual Studio itself (Just from one textbox to another).
I tried several workarounds, but no one works as expected.
My environment is Visual Studio, graphics library is default Windows Forms.
I would appreciate helpfull hints, thank you.
Kalix
|
|
|
|
|
you want to check to see if there is selected text first (selected text length > 1). If there is, you are doing a drag/drop. If not, you are selecting text. This is how you make the distinction.
hope this helps
|
|
|
|
|
Thanks for your reply. I tried to check the SelectionLength and SelectedText propertys, but if I start to drag the text becomes unselected.
It would work, if the MouseDown event is fired before the unselection.
Does anybody have an idea?
|
|
|
|
|
Hi
I need to draw a Border around a Tabcontrol ( i mean around the entier Tabcontrol not around the TabPages). i am able to do draw a border by overriding the OnPaint method but the Tabs disappear. This is my code. I have the double buffering code in the constructor.
<br />
base.OnPaint(e);<br />
Rectangle borderRectangle = ((Control)this).ClientRectangle;<br />
int BorderWidth = 1;<br />
Color BorderColor = Color.Black;<br />
ControlPaint.DrawBorder(e.Graphics, borderRectangle, BorderColor, BorderWidth, ButtonBorderStyle.Solid, BorderColor, BorderWidth, ButtonBorderStyle.Solid, BorderColor, BorderWidth, ButtonBorderStyle.Solid, BorderColor, BorderWidth, ButtonBorderStyle.Solid);<br />
Can anyone help me out in this. My question is do i have to draw the tabs aswell or am i missing something.
Regards
Deepak
-- modified at 14:01 Monday 14th November, 2005
|
|
|
|
|
Dear Experts,
I want to copy open files (DLL or Database file) If I use File.Copy(srcFile,dstFile) method it returns an error "Can not access file "filename" it is being used by another process.". Please help me how can I copy such files??
Best regards,
Asaad
Osman
|
|
|
|
|
close the file and then copy it again.
|
|
|
|
|
Dear Sir,
Thank you for your prompt reply. I dont want to close file. Actually I want to copy SQL Server Database files or any DLL so I dont want to stop SQL Server Service or How can I close DLL.
Thanks
Osman
|
|
|
|
|
Hi
After Drawing UML Class Digram by using MS-Visio
How i Can Generate C# Source Code of this UML Class Digram...
thanks
|
|
|
|
|
Hi
Is there an equivalent to UML multiplicitys and Association Class in the Visual Studio Class Designer?
and how i can draw Association Class in the Visual Studio Class Designer?
thanks ....
|
|
|
|
|
Hi,
I've got a custom user control using inheritance that I'm working on that I would like to cancel the 'Click' event. Any help would be greatly appreciated.
|
|
|
|
|
From the MSDN documentation on the Control.OnClick method:
The OnClick method also allows derived classes to handle the event without attaching a delegate. This is the preferred technique for handling the event in a derived class.
Notes to Inheritors: When overriding OnClick in a derived class, be sure to call the base class's OnClick method so that registered delegates receive the event.
From reading this, I infer that if you override your inherited control's OnClick method and do not call base.OnClick, then any registerd event handlers will not receive the event notification.
The code below shows this:
using System;
using System.Windows.Forms;
namespace OnClickOverride
{
public class MainForm : Form
{
public MainForm()
{
Height = 100;
Width = 200;
Button b = new Button();
b.Text = "Normal";
b.Top = 10;
b.Left = 10;
b.Click += new EventHandler( normal_Click );
Controls.Add( b );
b = new OverriddenButton();
b.Text = "Abnormal";
b.Top = 10;
b.Left = 100;
b.Click += new EventHandler( abnormal_Click );
Controls.Add( b );
}
private void normal_Click( object sender, EventArgs e )
{
MessageBox.Show( "Clicked the normal button." );
}
private void abnormal_Click(object sender, EventArgs e)
{
MessageBox.Show( "Clicked the abnormal button." );
}
[STAThread]
public static void Main()
{
Application.Run( new MainForm() );
}
}
public class OverriddenButton : Button
{
protected override void OnClick(EventArgs e)
{
}
}
}
"we must lose precision to make significant
statements about complex systems."
-deKorvin on uncertainty
|
|
|
|
|
Thanks for your reply; I'm trying to work it out in context.
|
|
|
|
|
Hi,
I'm not certain how to use this in a user control? Someone suggested I use this:
protected override void onclick(System.EventArgs e)
{
//base.onclick (e);
}
But it returned an error saying "no suitable method found to override".
I'm trying to interrupt the event in the user control and not in the parent form.
|
|
|
|
|
Two things, really.
1) Does the user control inherit from the System.Windows.Forms.Control class?
2) I'm sorry, but the formatter messed up my code. The method has a capital O and capital E so that it reads OnClick.
"we must lose precision to make significant
statements about complex systems."
-deKorvin on uncertainty
|
|
|
|
|
using System;
using System.Collections;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Windows.Forms;
namespace RadioButtonRocLib
{
public class RadioButtonRoc : System.Windows.Forms.RadioButton
{
private System.ComponentModel.Container components = null;
public RadioButtonRoc()
{
Code continues.........
|
|
|
|
|
This following builds but I see no effect in my test form:
protected override void OnClick(System.EventArgs e)
{
base.OnClick(e);
}
-- modified at 16:01 Monday 14th November, 2005
|
|
|
|
|
If you don't want the radio button to process the OnClick event, remove the base.OnClick(e) call from your code.
"we must lose precision to make significant
statements about complex systems."
-deKorvin on uncertainty
|
|
|
|
|
make it like this
protected override void OnClick(System.EventArgs e)
{
//base.OnClick(e);
}
|
|
|
|
|
Hi Josh,
I think the Code Project site has reformatted your code or else it's identical previous suggestions.
|
|
|
|
|
Hi,
I have a listview (property View is "Details"). I set the sorting property true. Is it possible that the sorting is made after the second column and not the first one (like it does now)?
Thanks!
|
|
|
|
|
Yes, it's possible. But it's not easy. You have to handle the ColumnClick event of the ListView , provide you own sorting mechanism...
But wait, actually it's easy Simply use the ListViewSortManager class from the following article:
http://www.codeproject.com/cs/miscctrl/lvsortmanager.asp[^]
I hope it helps!
-- LuisR
Luis Alonso Ramos
Intelectix - Chihuahua, Mexico
Not much here: My CP Blog!
The amount of sleep the average person needs is five more minutes. -- Vikram A Punathambekar, Aug. 11, 2005
|
|
|
|
|
hi all,
I would want to allow the opening of particular system dialog from my c# application. I heave find this article written in mfc/c++, is possible to written a similar class in c# ? I have tried but my solution not allow to open a system dialog as modal.
this is my class:
using System;<br />
using System.IO;<br />
using System.Diagnostics;<br />
using System.ComponentModel;<br />
using System.Windows.Forms;<br />
using System.Runtime.InteropServices;<br />
<br />
namespace System<br />
{<br />
public class SystemDialogs<br />
{<br />
public SystemDialogs()<br />
{<br />
<br />
}<br />
<br />
public enum Dialogs<br />
{<br />
SD_FORMAT = 1,<br />
SD_INTERNET_OPTIONS = 2,<br />
SD_ADD_REMOVE_PROGRAMS = 3,<br />
SD_DATE_TIME = 4,<br />
SD_DISPLAY = 5,<br />
SD_MODEM = 6,<br />
SD_MULTIMEDIA = 7,<br />
SD_MOUSE = 8,<br />
SD_NETWORK = 9,<br />
SD_PASSWORD = 10,<br />
SD_SYSTEM = 11,<br />
SD_REGIONAL_SETTINGS = 12,<br />
SD_SOUNDS = 13,<br />
SD_GAME_CONTROLLERS = 14,<br />
SD_KEYBOARD = 15,<br />
SD_DEVICE_MANAGER = 16,<br />
}<br />
<br />
public static void ShowDialog(SystemDialogs.Dialogs Dialog)<br />
{<br />
string[] Args = new string[16]<br />
{<br />
"Shell32.dll SHFormatDrive",<br />
"Shell32.dll Control_RunDLLA inetcpl.cpl 0",<br />
"Shell32.dll Control_RunDLLA appwiz.cpl",<br />
"Shell32.dll Control_RunDLLA timedate.cpl",<br />
"Shell32.dll Control_RunDLLA desk.cpl",<br />
"Shell32.dll Control_RunDLLA modem.cpl",<br />
"Shell32.dll Control_RunDLLA mmsys.cpl 0",<br />
"Shell32.dll Control_RunDLLA main.cpl @0",<br />
"Shell32.dll Control_RunDLLA netcpl.cpl",<br />
"Shell32.dll Control_RunDLLA password.cpl",<br />
"Shell32.dll Control_RunDLLA sysdm.cpl 0",<br />
"Shell32.dll Control_RunDLLA intl.cpl 0",<br />
"Shell32.dll Control_RunDLLA mmsys.cpl @1",<br />
"Shell32.dll Control_RunDLLA joy.cpl",<br />
"Shell32.dll Control_RunDLLA main.cpl @1",<br />
"DevMgr.dll DeviceManager_ExecuteA"<br />
};<br />
<br />
int i = (int) Dialog - 1;<br />
Process p = new Process();<br />
p.StartInfo.FileName = "Rundll32.exe";<br />
p.StartInfo.Arguments = Args[i];<br />
p.Start();<br />
}<br />
}<br />
}
In settings form of my application i call this method:
using System;<br />
-----------<br />
----------<br />
SystemDialogs.ShowDialog(SystemDialogs.Dialogs.SD_INTERNET_OPTIONS);
...for showing the internet options dialog as no modal ...
suggestions ?
tnx to all and excuse me for eventual grammar's errors .... i'm italian
|
|
|
|