|
Since you refer to 'code behind' your question is probably in the wrong forum. It should more properly be in (at a guess) the ASP or WPF forum.
In Windows Forms programming the TextBox cannot display text styles from tags, only from being assigned a boldened font.
Henry Minute
Do not read medical books! You could die of a misprint. - Mark Twain
Girl: (staring) "Why do you need an icy cucumber?"
“I want to report a fraud. The government is lying to us all.”
|
|
|
|
|
If you use classic Windows Form App then you need to use TextBox.Font[^]
In Wpf, it is FontWeight
|
|
|
|
|
I aasigned Text to the Textbox from code behind like "Showing "+Test+" message ...";
Its not displaying Test in bold.How can I do this
|
|
|
|
|
Please try to avoid posting the same question more than once!
Henry Minute
Do not read medical books! You could die of a misprint. - Mark Twain
Girl: (staring) "Why do you need an icy cucumber?"
“I want to report a fraud. The government is lying to us all.”
|
|
|
|
|
I'm taking this exam in a little more then a week from now and am searching for some practice questions. I found some and didn't always understand the question so I tried it out. "It didn't work". Really, the code they gave as the answer did not what the question requested.
I'm curious if the source is trustworthy or if I'm going bananas here (or both ) ??
thanks.
below an example of such a question and expected answer:
(apologies for the formatting)
You use Microsoft .NET Framework 4 to create a Windows Presentation Foundation (WPF) application.
You write the following code fragment.
<StackPanel TextBox.PreviewTextInput="StackPanel_PreviewTextInput">
<TextBox Name="TxtBoxA"/>
<TextBox Name="TxtBoxB"/>
<TextBox Name="TxtBoxC"/>
</StackPanel>
You create an event handler named StackPanel_PreviewTextInput. You also have a collection of strings named Keywords.
You need to ensure that TxtBoxA and TxtBoxB do not contain any of the strings in the Keywords collections.
Which code segment should you use?
A. private void StackPanel_PreviewTextInput(
object sender, TextCompositionEventArgs e)
{ FrameworkElement feSource = sender as FrameworkElement;
if (feSource.Name == "TxtBoxA" || feSource.Name == "TxtBoxB")
{ foreach(string keyword in Keywords)
{
if(e.Text.Contains(keyword)) { e.Handled = false;
return;
}
}} e.Handled = true;
} }
B. private void StackPanel_PreviewTextInput(
object sender, TextCompositionEventArgs e) {
FrameworkElement feSource = e.Source as FrameworkElement;
f (feSource.Name == "TxtBoxA" || feSource.Name == "TxtBoxB")
f (feSource.Name == "TxtBoxA" || feSource.Name == "TxtBoxB") {
foreach(string keyword in Keywords)
{
if(e.Text.Contains(keyword)) { e.Handled = false;
return;
}
} e.Handled = true;
C. private void StackPanel_PreviewTextInput(
object sender, TextCompositionEventArgs e)
{
FrameworkElement feSource = sender as FrameworkElement;
if (feSource.Name == "TxtBoxA" || feSource.Name == "TxtBoxB")
{ foreach(string keyword in Keywords)
{ if(e.Text.Contains(keyword)) {
e.Handled = true;
return; }
} e.Handled = false;
} }
D. private void StackPanel_PreviewTextInput(
object sender, TextCompositionEventArgs e)
{ FrameworkElement feSource = e.Source as FrameworkElement;
if (feSource.Name == "TxtBoxA" || feSource.Name == "TxtBoxB")
{
foreach(string keyword in Keywords)
{ if(e.Text.Contains(keyword)) {
e.Handled = true;
return;
} } e.Handled = false;
}
}
Answer D is the right answer...
However, following the question I found following to actually do what was requested:
(except when you paste the word in the textbox so even the idea of using this code for the requested functionality is not really ideal)
the problem was that e.Text only gave the typed character and not the entire contents.
private void StackPanel_PreviewTextInput(object sender, TextCompositionEventArgs e){
FrameworkElement feSource = e.Source as FrameworkElement;
if (feSource.Name == "TxtBoxA" || feSource.Name == "TxtBoxB") {
foreach (string keyword in Keywords) {
lbl_info1.Content = e.Text;
if ( ((((TextBox)feSource).Text)+e.Text).Contains(keyword)) {
e.Handled = true;
return;
}
}
e.Handled = false;
}
}
V.
|
|
|
|
|
hi !
I am trying to get the url referer in http handler. all the broweser is giving currect valu except safari. It is null evry time. Can you pleaes tell me how do i get the url referer in safari
Thank you.
|
|
|
|
|
This[^] should be the correct place to ask.
Best wishes,
Navaneeth
|
|
|
|
|
Hello.
I have a form that is a multi page wizard.
It will ask the user for quite a bit informtion, some text, some int values and other.
When it is finished collecting the data, I would like to pass it into a seperate object that will "process" the data, and respond with a string or other value to the main form.
What is the best way to approach this, as all my objects so far have only needed to pass in one or 2 auguments or data values.
Thank you
Steve
|
|
|
|
|
Anything gathered from a manual input cannot be considered a large amount of data.
Presumably you have a class with fields (properties or variables) that represent the information gathered from the form OR you have a dictionary type object with key/values to retain the data. You should pass the object (class or dictionary/list) to the processing method(s).
Never underestimate the power of human stupidity
RAH
|
|
|
|
|
Hi,
When I said a large amount of data, I simply meant alot of fields from a wizard form.
My main form is a wizard, Form1, with several pages. Each page contains approx 5-6 text boxes or some drop down controls etc.
When the user has finished clicking next for each page of the wizard, and we get to the last page, are you sugesting I then pass the object of my main form into the object for processing?
If so, how would I do that?
Thank you
Steve
|
|
|
|
|
stephen.darling wrote: are you sugesting I then pass the object of my main form into the object for processing?
Not the object of main form, but the object where you have collected the data. Consider a form with two textboxes and Name and Age. You'd create a type like,
class PersonInfo
{
public string Name { get; set; }
public string Age { get; set; }
} and pass instance of this object to the processing routine.
DataBinding in windows forms makes this easy as it allows you to bind object fields directly to the control. Your object will get updated automatically when value changes on the control.
Best wishes,
Navaneeth
|
|
|
|
|
Aw thank you.
That helps alot.
Steve
|
|
|
|
|
I want to pass a struct which has a array of struct to a unmanaged code(a C DLL) and get the struct filled by the function in the DLL.Kindly help me to do this.
In C DLL
#define DLL_EXPORT extern "C" __declspec(dllexport)
typedef struct device_Struct
{
int valid;
int deviceId;
int version;
char flashData[100];
} device_def;
typedef struct module_Struct
{
device_def module[13];
int testHdId;
}module_def;
DLL_EXPORT int _stdcall GetModules(int *TestHead,module_def *Module_Def)
{
*TestHead=2;
(Module_Def+0)->module[0].valid=1;
(Module_Def+0)->module[0].deviceId=5;
(Module_Def+0)->module[0].version=2;
strcpy((Module_Def+0)->module[0].flashData,"FlashData");
Module_Def[0].testHdId=3;
return 1;
}
In C# code
[StructLayout(LayoutKind.Sequential,CharSet=CharSet.Ansi)]
public struct device_Str
{
public int valid;
public int deviceId;
public int version;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 100)]
public string flashData;
};
[StructLayout(LayoutKind.Sequential)]
public struct module_Str
{
[MarshalAs(UnmanagedType.ByValArray,SizeConst=13)]
public device_Str[] module;
public int testHdId;
};
[DllImport("BCB_DLL.dll")]
public static extern int GetModules(ref int TestHead, module_Str[] Module_Def);
int i,j,NumOfTestHead=0,DeviceID;
module_Str[] ModuleDef = new module_Str[4];
for (i = 0; i < 4; i++)
{
ModuleDef[i] = new module_Str();
ModuleDef[i].module = new device_Str[13];
for (j = 0; j < 13; j++)
{
ModuleDef[i].module[j] = new device_Str();
}
}
GetModules(ref NumOfTestHead, ModuleDef);
DeviceID=ModuleDef[0].module[0].deviceId;
I know I have to do Marshalling.
Help me how to do that.
|
|
|
|
|
Hi,
several comments:
1.
I wrote an article on P/Invoke, unfortunately only part 1[^] is available so far, structs will be handled in part 2.
If you own the native code, I strongly suggest you apply my logging advice, so you can observe both managed and native worlds in one listing.
2.
your _def and _struct suffixes are a bit hard to get used to. I would drop them completely in the managed world.
3.
If I were in charge of the code at both ends, I would go for something simpler, i.e. more function calls, less data.
BTW: what happens if, suddenly, GetModules wants to return more than 4 modules?
4.
there is a potential issue in
char flashData[100];
versus
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 100)]
public string flashData;
[MODIFIED]
A managed string holds Unicode characters, taking 16-bit each.
The simplest equivalent of a native char array (chars are 8-bit here) would be a byte array.
[/MODIFIED]
ByValTStr derives the native character type from the CharSet attribute. You'd want an explicit CharSet=CharSet.Ansi; I admit MSDN is pretty unclear on the matter.
5.
except for the string issue, I would expect things to be correct without any further explicit marshaling, as you are basically passing a ref to one chunk of memory to be filled with ints and bytes.
6.
I don't see why the very first few ints would not be all correct. 5.
for debugging purposes, I suggest you initialize your struct members to all kinds of different silly values, so you can better see what gets filled in correctly and what doesn't. And I tend to use hex formatting while looking at such data, as that better reveals alignment problems.
Hope this helps.
|
|
|
|
|
The size of structure sent is always 4.It is fixed.
Only the ref param receives correct value from the function.
But ModuleDef[0].module[0].deviceId do not get correct value.
Does anyone know how to achieve this.
Thanks Luc Pattyn for your reply.
modified on Friday, September 24, 2010 3:30 AM
|
|
|
|
|
OK, have given this some more thought. The problem most likely is this:
due to the string issue, your data really gets marshaled, i.e. copied (as it needs a conversion between 8-bit and 16-bit characters); so both sides are not working on the same chunk of memory after all.
Now you did not specify in which direction the copy needs to take place, and there are some defaults, which don't suit your case. You probably need to add an [Out] ; have a look at the start of this article[^].
|
|
|
|
|
When I use out or ref keyword,I get System.ExecutionEngineException error.
If not specified,it compiles and run smooth, but no change in the values of struct.
I have modified the C# struct accordingly by the P/Invoke Interop Assistant result,but no gain.
What to do?.
|
|
|
|
|
I suggest you start with something simpler. Don't do "array of structs holding array of struct holding string" right away. At the very least get rid of the string, try a fixed-length byte array. The simplest first experiment would be to simply pass just a byte array of sufficient size and see if all the data gets stored in there. Remember to log it all, preferably in hex.
When the simple byte array is OK, make a struct with some actual types and the rest just a fixed-size byte array, and as long as it works let it evolve to the right thing. As soon as it fails, fix it before you add complexity.
|
|
|
|
|
I cannot change the struct in DLL,because it is used by many application.
I tried using Marshal.PtrToStructure.
But do not know how to increment the pointer.
Now the value is correct for the first array element.
Can you help in incrementing the pointer that points to the array of structures.
IntPtr pPointer;
module_Str AModule;
DeviceSize = Marshal.SizeOf(typeof(module_Str));
pPointer=Marshal.AllocHGlobal(DeviceSize*4);
GetModules(ref NumOfTestHead, pPointer, ref SW_Version);
AModule=(module_Str)Marshal.PtrToStructure(pPointer, typeof(module_Str));
DeviceId=AModule.module[0].deviceID
But how to increment the pointer to get each array element of structure,
ie.AModule[0],AModule[1] and so on..
|
|
|
|
|
I don't know. I never do such complex interfaces, they don't make sense to me.
|
|
|
|
|
I had to call a bunch of Windows APIs from C# that weren't defined in www.pinvoke.net - mostly the wifi APIs.
This tool helped a lot - it helped me generate the correct C# structures for the structs that were in the native code.
It also will let you generate equivalent C# structs for your own C structs, you just have to paste the C struct into it and it will generate the C# struct equivalent.
http://blogs.microsoft.co.il/blogs/sasha/archive/2008/01/12/p-invoke-signature-generator.aspx[^]
David
|
|
|
|
|
It is a nice tool man.
But unfortunately it does not work for my problem.
|
|
|
|
|
Finally I found a solution for my problem.
Pointer increment can be done by ToInt32() function of IntPtr and adding the Offset.
Here Offset is the size of the element in the array.
IntPtr pPointer;
module_Str AModule;
DeviceSize = Marshal.SizeOf(typeof(module_Str));
pPointer=Marshal.AllocHGlobal(DeviceSize*4);
GetModules(ref NumOfTestHead, pPointer, ref SW_Version);
int Offset=0;
for (i = 0; i<4; i++)
{
IntPtr IncrPtr = new IntPtr(pPointer.ToInt32() + Offset);
AModule=(module_Str)Marshal.PtrToStructure(IncrPtr, typeof(module_Str));
Offset = Offset + Marshal.SizeOf(typeof(module_Str));
for (j = 0; j <13; j++)
{
ListBox.Items.Add("DeviceID : " + AModule.module[j].deviceId);
ListBox.Items.Add("Version : " + AModule.module[j].version);
ListBox.Items.Add("Valid : " + AModule.module[j].valid);
ListBox.Items.Add("FlashData: " + AModule.module[j].flashData);
ListBox.Items.Add("TestHead : " + AModule.testHdId);
ListBox.Items.Add("");
}
}
Marshal.FreeHGlobal(pPointer);
|
|
|
|
|
how to deploy my project in visual studio 2010(C#)..........
plz send solution step by step...........
|
|
|
|
|
Depends on where you want to deploy it, and what type of project it is (e.g., ASP.Net web application, Windows Forms, WPF, etc.). Usually, though, you can right click on your project and select "Publish" and follow the screens presented to you.
|
|
|
|