|
I am working on an application with a rich text box and I am starting to go crazy.
Here’s what I need to do:
* Set the width of the text box to the width of the widest string.
* Get the height of the text box given a particular width so that all text fits in and there are no vertical or horizontal gaps (i.e. tightest configuration) and no scroll bars.
* Get the next narrowest/widest configuration of the text box which has one less or one more line.
I have tried using MeasureString (with GenericTypographic and GenericDefault), I have tried using SetMeasureableCharactersRanges, I have tried counting pixels, I have tried enabling anti-aliasing and smoothing text, I feel that I have tried everything.
Unfortunately it seems that when I measure strings and then use these measurements with the text box, they mismatch.
For example, my text measuring function tells me that the width of the longest word is 10. However, when I set the width of the text box to 10 it turns out to be too small.
To make it right I have to add a fudge factor. Unfortunately it seems that for different strings the amount that I need to add varies. Sometimes it can be 1, sometimes it can be 10.
I am aware of the issues between GDI and GDI+ but is there nothing one can do?
Any help/suggestions would be greatly appreciated.
Thanks.
|
|
|
|
|
tech_01 wrote: To make it right I have to add a fudge factor. Unfortunately it seems that for different strings the amount that I need to add varies. Sometimes it can be 1, sometimes it can be 10.
Have you tried to calculate the Average space required by each character in the text box?
if this idea works then please! let me to know.
Thanks and
Best Regards.
_____________________________
Success is not something to wait for, its something to work for.
|
|
|
|
|
Hi All
I need to use TripleDES encyption for my Web Application. I want to store the key used for encryption in the web.config file. How would I go about choosing a key, storing the key in the web.config, retrieving the key for encryption and decryption, and then doing the encryption itself. I'm relatively new at doing cryptography in C#.
Thanks
-- modified at 2:46 Wednesday 7th June, 2006
|
|
|
|
|
You can see the sample from microsoft in your visual studio directory.
C:\Program Files\Microsoft Visual Studio .NET 2003\SDK\v1.1\QuickStart\howto\samples\cryptography\fileencrypt\cs
|
|
|
|
|
I don't want to read data in from a file, then encrypt and decrypt it. I want to retrieve a value from the HTTP HEADERS and encrypt that, then redirect from that page with the ecrypted value appended to the URL and decrypt it on another page.
|
|
|
|
|
Hi,
You can use the following code.
TripleDESCryptoServiceProvider provider = null;
MemoryStream ms= null;
CryptoStream cs = null;
StreamWriter sw = null;
try
{
provider = new TripleDESCryptoServiceProvider();
ms = new MemoryStream();
cs = new CryptoStream(ms,provider.CreateEncryptor(Key,Vector),CryptoStreamMode.Write);
sw = new StreamWriter(cs);
sw.Write(strValue);
sw.Flush();
cs.FlushFinalBlock();
ms.Flush();
}
catch(Exception)
{
//do exception handling
}
finally
{
sw.Close();
cs.Close();
ms.Close();
}
Guess this will help you.
Regards,
Mahen
|
|
|
|
|
That's great, thank you. But I would like to use keys (validationKey and decryptionKey) stored in my web.config file. Also, I want to retrieve a value from the HTTP HEADERS and encrypt that. Then append the encrypted string to a URL and redirect to another page and decrypt it there.
|
|
|
|
|
Hi,
If you want you can store the keys in web.config or else you can use registry etc. Store them as strings and covert them to Byte array while doing the encryption.
private static void GetKeys(byte[] Key, byte[] Vector)
{
string[] keystring;
string[] vectorstring;
byte[] intKey = new byte[24];
byte[] intVector = new byte[7];
strKey = System.Configuration.ConfigurationSettings.AppSettings["Key"];
strVector = System.Configuration.ConfigurationSettings.AppSettings["Vector"];
keystring = strKey.Split(new char[]{','});
vectorstring= strVector.Split(new char[]{','});
//build the keys
for(int i=0; i<23; i++)
{
intKey[i] = Convert.ToByte(strKey[i]);
}
for(int i=0; i<7; i++)
{
intVector[i] = Convert.ToByte(strVector[i]);
}
byte[] intLocalKey = {intKey[0], intKey[1], intKey[2], intKey[3], intKey[4], intKey[5], intKey[6], intKey[7], intKey[8], intKey[9], intKey[10], intKey[11], intKey[12], intKey[13], intKey[14], intKey[15], intKey[16], intKey[17], intKey[18], intKey[19], intKey[20], intKey[21], intKey[22], intKey[23]};
byte[] intLocalVec = {intVector[0], intVector[1], intVector[2], intVector[3], intVector[4], intVector[5], intVector[6], intVector[7]};
Key = intLocalKey;
Vector = intLocalVec;
}
Regards,
Mahen
|
|
|
|
|
Thanks so much, you've been a really great help. But one last thing, what does the size of the Initialisation vector need to be and what characters may it store? Cos I need this for the web.config too.
|
|
|
|
|
Hi,
The size is 7. Its there in the declration of the array.
Regards,
Mahen
|
|
|
|
|
What is the StrValue that you pass to the streamwriter?
|
|
|
|
|
Hi,
strValue is the text that needs to be encrypted.
Regards,
Mahen
|
|
|
|
|
Can I not convert the string to a byte array and then pass it to the memorystream? Won't this work too? How do I retrieve the encrypted string once the process is complete?
|
|
|
|
|
Hi,
In the code used to encrypt add the following statement to get the encrypted text into a string variable strRtnvalue.
strRtnvalue = Convert.ToBase64String(ms.GetBuffer(),0,Convert.ToInt32(ms.Length));
Regards,
Mahen
|
|
|
|
|
What text encoding must be used for the byte arrays? I'm using the UniCodeEncoding. But I keep getting an error that the key length is wrong for this algorithm. But my key is 48characters in length and the IV is 16cahracters in length.
|
|
|
|
|
Please dont reinvent the wheel. Use SSL.
|
|
|
|
|
Hi people,
I'm having a rather weird problem.
I have tried the code in this article http://www.codeproject.com/cs/webservices/AdvAsynchWebService.asp[^] and it works perfectly well. Now I'm trying to use the same technique in my windows form. I call a webservice method asynchronously that returns a factorized version of a number I send (example on MSDN at http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconinvokingwebservicesasynchronously.asp[^]) When I display the resulting string in a messagebox, everything works fine but when I try to display the result in a label on the form, something goes wrong and the form freezes. It is frustrating to see a working example and not being able to make your own example work
Does anyone have any idea why this is happening and how I may resolve the issue? I can post my code if necessary.
Thanks,
Talal
"Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning."
--Rich Cook
|
|
|
|
|
hi all,i have some prob in sending mail,i am using smtp to send and receive mail but i need the send mail details(send items as in yahoo,etc..),is it possible using smtp?
Note:
i also try to use outlook but it did not get the access permission(it show access denied) even i add the aspnet user and iuser_machine account for fullrights.
is there any way to solve my prob?hlp plz.........
thanks in advance.
Regards,
ayyp
|
|
|
|
|
|
I have a listview-control in detail mode with two columns. The columnheaders are clickable, but how can I detect which columnheader was clicked.
And which event should I check?
thanks,
Ward
|
|
|
|
|
u can use
listView1_ColumnClick event of listview
rahul
|
|
|
|
|
Yes, I was that far. But how can I detect if it was column[0] or column[1] that has been clicked on?
Ward
|
|
|
|
|
Ok, I found it:
<br />
if(e.Column == 0)<br />
{<br />
}<br />
else if(e.Column == 1)<br />
{<br />
}<br />
Ward
|
|
|
|
|
Hi
I have a COM DLL(C++ Code), I am calling this dll from a C# application.
Is it possible to debug the c++ code from C# application?
Regards
Sarma
|
|
|
|
|
hi
i am working on wtsapi32.dll to get mad address of client that connect to trminal server.
i use wtsclienthardwareid = 13 . but evry time i get a diffrente number .any one can help me.
in generall what is wtsclienthardwareid and if it is mac address how can read it. i am writing my program in c#.thx
|
|
|
|