|
I can't think of any good way to do it, either.
It's trivial in C# to get a pointer to a managed piece of data as long as you fix the managed object, but in this case, you've got a pointer to an unmanaged piece of data.
|
|
|
|
|
hi there,
i want my app to appear in different languages. the user may choose his prefered language in an options-dialog.
which way would YOU do that?
* define a seperate class, containung a string-member for each string-constant?
* some resource-thing (as it was with the string-tables in C++/MFC-times)
* is there something built-in in C# for that purpose?
* ...
what about the language-files (containing all the strings)? is xml overkill?
i'm currently in the phase of thinking about it, implementing comes later. my current favorite is as described - a class containing a string-member for each message initialized by an xml-file for each language. so when the user changes the language, the class just reads a different xml-file, rewrites all of its string-members and everything is redrawn/reassigned. but i'm not sure, if this is the best way...
so if anyone has some hints, i would be glad to read them...
:wq
|
|
|
|
|
Have you seen the 'Language' property?
Go to your dialog, change the 'Language' to the desired locale, and then .NET handles it for you. Was one of the neatest features I've seen in the IDE yet.
|
|
|
|
|
what's the use? it didn't changed anything (i thought at least the system-menu-entries (minimize, maximize, move, etc.) should have changed)
btw: this doesn't help with the menu and labels etc. because I assign the text-properties myself (or is there some hidden dictionary somewhere) - and when i want my application to appear in a completely different language, all texts have to be changed.
or am i getting something wrong...
:wq
|
|
|
|
|
No, it doesn't change anything. You need to change it.
Make a new dialog and put the text field 'Name:'
Now change the language to French and rename the field 'Nom:'
Now change the language back to English.
Cool, eh?
|
|
|
|
|
I would choose build-in function called globalization.
In the property window there is a property called Language.
First of all, enter text for your controls in the default language. Then change the language to another and change text.
For one language the editor creates one .resx file the WinForms directory.
For example:
default language - MainForm.resx
second language (in this case Polish) - MainForm.pl.resx
For details see the documentation
43 68 65 65 72 73 2c
4d 69 63 68 61 65 6c
|
|
|
|
|
I almost forget.
The following code shows how to change the language programmatically
System.Globalization.CultureInfo culture =
new System.Globalization.CultureInfo( "fr" );
System.Threading.Thread.CurrentThread.CurrentUICulture = culture;
where fr is a language code ( see MSDN ).
43 68 65 65 72 73 2c
4d 69 63 68 61 65 6c
|
|
|
|
|
i just want to mention, that using the form-editor was a BAD idea.
my menuitems are objects of my own menuitem-class - after just changing the language in the properties-window, the menu completely vanished. setting the language back to 'default' didn't bring it back! the variables are still there, but the AddRange-functions of the main menu items were absent. ok, i added them by hand. fault! the form-designer showed me an error-message instead of the form-preview.
i corrected these things by changing the order of the variable-definitions (!!!) - but the designer now doesn't work, as he did before. the additional properties of my menuitems are set back each time i compile after using the form-designer...
i tell you: you better stick to the standards when using the form-designer.
i will do that all by hand from now on...
:wq
|
|
|
|
|
The globalization function is cool.
The C# designer seems not to work correctly with custom classes, for example Menu.
I use globalization but I don't use designer. I write my own code.
This code use Carlos H. Perez's library - designer is not supported.
There is only one minus of it. You must create the resources yourself using resgen.exe and al.exe
private System.Resources.ResourceManager m_mResources = new System.Resources.ResourceManager(typeof(MainForm));
ToolBarEx menuToolBar = new ToolBarEx( BarType.MenuBar );
ToolBarItem menuFile = new ToolBarItem( (string)(m_mResources.GetObject("Menu.File")) );
MenuItem[] submenuFile = new MenuItem[3];
submenuFile[0] = new MenuItemEx( (string)(m_mResources.GetObject(
"Menu.File.Options")), new EventHandler( OptionsHandler ), Shortcut.CtrlO );
submenuFile[1] = new MenuItemEx( "-", null );
submenuFile[2] = new MenuItemEx( (string)(m_mResources.GetObject(
"Menu.File.Close")), new EventHandler( CloseHandler ) );
menuFile.MenuItems = submenuFile;
43 68 65 65 72 73 2c
4d 69 63 68 61 65 6c
|
|
|
|
|
I can not close the window with X on the window(System close)
Can anyone help me with that?
Thanks
|
|
|
|
|
what functions did you overwrite in your application?
:wq
|
|
|
|
|
I did not over write any function?
|
|
|
|
|
in the case, it doesn't close when you click - does it close when you click a second time?
maybe it's a focus-problem (although windows are closed when you click the "x" and they don't have the focus...)
:wq
|
|
|
|
|
I can not close at all.
but If I create a Exit menu and put "Dispose(true);" then I can close the window.
X is not calling the Dispose(true) methode at all.
Thasnks
|
|
|
|
|
If you want to build a COM server component using Visual C#, which project type do you choose in the "New project" window?
|
|
|
|
|
Anything will do. You can use EXE or a DLL. You need to apply the correct attributes and register the assembly using regasm
|
|
|
|
|
May be I am stupid, But what are you talking about.
Sometime I can close my main window and some time I can not close the window with system menu. Are you talking about this?
Thanks
|
|
|
|
|
I did not answer to your question
Looks like the forum is screwed up
|
|
|
|
|
hello you all,
I have a problem:
I have a dataGrid with two events:
1. public void DataGrid1_ChooseLine(object sender, DataGridCommandEventArgs e)
{
try{
complaintId = Convert.ToInt32(e.Item.Cells[6].Text);
}
catch(Exception e)
{
}
}
and:
2. public void changePage(Object sender, DataGridPageChangedEventArgs e)
{
DataGrid1.CurrentPageIndex = e.NewPageIndex;
DataGrid1.DataSource = dataSet;
DataGrid1.DataBind();
}
each of them works wonderful alone, but when I use them both I get this exception:
"System.ArgumentOutOfRangeException: Specified argument was out of the range of valid values..."
what can be the problem and how can I change it to work?
thank you very much for your help,
sharon.
|
|
|
|
|
after some debugging I noticed that when I change page it goes to the ChooseLine event and than go to the pageChang event (very weird)
maybe someone knowes why?
|
|
|
|
|
usually the debugger tells you, in which line exactly the exception was thrown. which line is it?
:wq
|
|
|
|
|
the line that debugger tells me is:
complaintId = Convert.ToInt32(e.Item.Cells[6].Text);
in chooseLine event
i.e. he goes to the wrong event.
why???
|
|
|
|
|
well, the cell-array doesn't seem to have 7 elements - thus cell[6] rises the Out-Of-Range-Exception.
:wq
|
|
|
|
|
hi all,
when i put a bitmap on a button and disable the control, the image is painted in a smooth gray-scale way.
is there any chance to access the corresponding
Image MakeMyImageGrayScale(Image my Image); function directly, giving it the colored image and getting back the grayscaled one?
or is the algorithm easy, so that someone can describe it here in the forum or knows a link to a description? if someone tells me how, i would do that myself.
would be
thx in advance
:wq
|
|
|
|
|
ok, i wrote my own:
Image ImageToGrayScale(Image orig)
{
Bitmap bm = new Bitmap(orig);
for (int i=0; i<bm.Width; ++i)
for (int j=0; j<bm.Height; ++j)
{
Color pixel = bm.GetPixel(i,j);
if (pixel.A>0)
{
int grayVal = 175+(pixel.R+pixel.G+pixel.B)/12;
bm.SetPixel(i,j,Color.FromArgb(grayVal,grayVal,grayVal));
}
}
return bm;
}
:wq
|
|
|
|