|
Hi,
I 'am trying to call default.html from my universal C# project ,a file in which I have defined my Google map,this is the tutorial reference:
Google Maps API on Windows Store App 8.1
and this is my code: in MainPage.xaml.cs:
public MainPage()
{
this.InitializeComponent();
LoadData();
MapWebView.NavigateToString(GeneratedHTML);
}
private async void LoadData()
{
try
{
await loadJsonLocalnew("default.html", "");
}
catch (Exception ex)
{
throw;
}
}
public async static Task loadJsonLocalnew(string url, object ClassName)
{
try
{
var folder = await StorageFolder.GetFolderFromPathAsync(Windows.ApplicationModel.Package.Current.InstalledLocation.Path + @"\");
StorageFile file = await folder.GetFileAsync(url);
Stream stream = await file.OpenStreamForReadAsync();
StreamReader reader = new StreamReader(stream);
String html = reader.ReadToEnd();
GeneratedHTML = html.ToString();
}
catch (Exception ex)
{
}}
this is the xaml file:
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<WebView x:Name="MapWebView" Width="Auto" Height="700"/>
</Grid>
but this time the html variable has this content:
Some files or contents of this website require a program that is not installed on your computer.
and I get a white page how can I deal with this problem
thanks for help
|
|
|
|
|
var folder = await StorageFolder.GetFolderFromPathAsync(Windows.ApplicationModel.Package.Current.InstalledLocation.Path + @"\");
StorageFile file = await folder.GetFileAsync(url);
You declare and initialize a variable named folder , but then you never use it.
Were you supposed to combine the folder path with the url to form the complete path to default.html ?
The difficult we do right away...
...the impossible takes slightly longer.
|
|
|
|
|
is it possible to setpixel and getpixel on controls?
|
|
|
|
|
|
No, because GetPixel and SetPixel are part of the Bitmap class, and Controls are not derived from Bitmap.
What are you trying to achieve that you think you need this?
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
Not to mention that SetPixel and GetPixel are really slow...
You're going to have to explain what you're trying to do and how these functions play into this goal.
|
|
|
|
|
Assuming you can get a bitmap of the current visual state of a Control, which you can do in WinForms pretty easily, well ...
Yes, you could manipulate that bitmap with Get/Set/Pixel, and then re-draw it onto the surface of the Control.
But, I can't think of a single-case where that would be a wise thing to do.
What you can do, and has been done, frequently, is to sub-class a Control in WinForms, like a 'Button, and then make it owner-drawn, and handle all the drawing yourself.
But, as comments here have told you, you are going to take big hit on performance using Get/Set/Pixel.
«Tell me and I forget. Teach me and I remember. Involve me and I learn.» Benjamin Franklin
|
|
|
|
|
As other have mentioned, it's rather pointless to use SetPixel/GetPixel on controls (that is, getting a Handle, getting a DC, and converting that to a bitmap).
What are you trying to achieve? Pretty sure you will end up using something else.
Best,
John
-- LogWizard - a Log Viewer that is easy and fun to use!
|
|
|
|
|
Please Help
How can I replace all text in a listBox1 that matches "some text " with "other text "?
I tried, but does not work...thanks.
private void button1_Click_1(object sender, EventArgs e)
{
listBox1.Items = listBox1.Items.ToString.Replace("some text ", "other text ")
}
|
|
|
|
|
I would approach this by:
private List<string> listItemData = new List<string>
{
"one","two","three","two","five","six","seven","two","nine","ten"
};
private void Form1_Load(object sender, EventArgs e)
{
listBox1.DataSource = listItemData;
}
private void ReplaceInListBox(string toFind, string toReplace, bool replaceOneItemOnly)
{
int ndx;
string itm;
for (int i = 0; i < listItemData.Count; i++)
{
itm = listItemData[i];
if (itm == toFind)
{
ndx = listItemData.IndexOf(itm);
listItemData.RemoveAt(ndx);
listItemData.Insert(ndx, toReplace);
if (replaceOneItemOnly) break;
}
}
listBox1.DataSource = null;
listBox1.DataSource = listItemData;
listBox1.Invalidate();
}
private void SomeButton_Click(object sender, EventArgs e)
{
ReplaceInListBox("two", "twenty", false);
} By the way, it would be interesting to know why it is you want to dynamically change the ListBox Items; that's something I would avoid unless it was absolutely necessary.
«Tell me and I forget. Teach me and I remember. Involve me and I learn.» Benjamin Franklin
|
|
|
|
|
I am dynamically binding a tree-view.I have multiple root nodes and multiple child nodes.OnSelectedNodeChanged event is firing only for childnodes of first root node.If I click on child nodes of second root node,i am getting root node value only in Treeview.Selectednode.Text. Can anyone help?this is my code..
this is my code..
private void FillCategories(string item, TreeNode parent)
{
string[] category1 = item.Split(',');
TreeNode tnParent = new TreeNode();
tnParent.Text = category1[1];
tnParent.Value = category1[0];
tnParent.ToolTip = category1[1];
tnParent.SelectAction = TreeNodeSelectAction.SelectExpand;
tnParent.CollapseAll();
tnParent.Selected = true;
parent.ChildNodes.Add(tnParent);
FillMetadata(tnParent, tnParent.Value);
}
private void FillMetadata(TreeNode parent, string categoryId)
{
DataSet ds = PDataset("SELECT MetadataID,MetadataName FROM Metadata WHERE MetadataID IN (SELECT MetadataID FROM CategoryMetadata WHERE CategoryID =" + categoryId + ") and ParentMetadataID IS NULL");
parent.ChildNodes.Clear();
foreach (DataRow dr1 in ds.Tables[0].Rows)
{
TreeNode child = new TreeNode();
child.Text = dr1["MetadataName"].ToString().Trim();
child.Value = dr1["MetaDataID"].ToString().Trim();
child.ToolTip = child.Text;
child.SelectAction = TreeNodeSelectAction.Select;
child.CollapseAll();
parent.ChildNodes.Add(child);
FillSubMetadata(child, child.Value);
}
}
private void FillSubMetadata(TreeNode child, string metadataId)
{
DataSet ds = PDataset("SELECT MetadataID,MetadataName FROM Metadata WHERE ParentMetadataID =" + metadataId + " ");
child.ChildNodes.Clear();
foreach (DataRow dr1 in ds.Tables[0].Rows)
{
TreeNode subchild = new TreeNode();
subchild.Text = dr1["MetadataName"].ToString().Trim();
subchild.Value = dr1["MetaDataID"].ToString().Trim();
subchild.ToolTip = subchild.Text;
subchild.SelectAction = TreeNodeSelectAction.Select;
subchild.CollapseAll();
child.ChildNodes.Add(subchild);
}
}
|
|
|
|
|
|
Your code is vulnerable to SQL Injection[^].
NEVER use string concatenation to build a SQL query. ALWAYS use a parameterized query.
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|
Does anyone know how to make a countdown timer?
I have tried but no methods I try work.
|
|
|
|
|
|
I searched for a solution on the internet but no luck.
I am using windows form with Serial Port control and richTextBox. I am trying to read the phone number from caller ID device (CTI comet caller ID) which decodes the Caller's telephone number from the telephone line and presenting it on a virtual COM5 Port of my PC because the Caller ID is a COM device.
The caller ID is connected to my PC via USB to COM Adapter because my PC doesn't have physical COM ports. Also the USB to COM Adapter driver is installed well .Note that the telephone line supports the caller ID feature.
When the phone rings the phone number should show up in richTextBox, I tried the following code but nothing happens (phone number did not appear) Am I missing something?.
My question:
How can I read data from virtual COM5 port in C#? Please help me to modify this code to make it work. Thank you
public partial class Form1 : Form
{
public SerialPort mySerialPort = new SerialPort("COM5");
public Form1()
{
InitializeComponent();
mySerialPort.DataReceived += new SerialDataReceivedEventHandler(DataR);
mySerialPort.Open();
}
public void DataR(object sender, SerialDataReceivedEventArgs e)
{
if (richTextBox1.InvokeRequired)
{
richTextBox1.Invoke(new SerialDataReceivedEventHandler(DataR), sender, e);
}
else
{
richTextBox1.AppendText(mySerialPort.ReadExisting());
}
}
private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
}
}
|
|
|
|
|
Start by making sure that you can communicate with the device at all, by using Hyperterminal or similar.
Until you have established that you have the right port, speed, pbc, parity, stop bits, and that any flow control is working fine, you are just guessing with "home brewed" code. So when it doesn't work, it could quite literally be anything causing it.
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
@ OriginalGriff .
I will try your idea and see what happens, I will let you know . thank you
|
|
|
|
|
How do you know that you're not receiving data and that the "display" part is the problem?
Read your port into a string and check the contents before trying to display something that may or may not be there.
(That's why you don't chain methods so early on in development).
|
|
|
|
|
@
Gerry Schmitz . I tried to read the port into a string but the string still empty, I debugged the program and I noticed that the DataReceived event did not got fired. Does it mean the port did not receive any data ? plseae help
|
|
|
|
|
naouf10 wrote: Does it mean the port did not receive any data ?
Yes... Exactly that...
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
@ OriginalGriff. I tested the caller Id in different PC (PC2) which has EPOS and this EPOS could display the phone number so it means the port receives data when phone rings therefor I tested my C# code in PC2 and still my app didn't receive data from COM port although EPOS can read data from same port. any idea?
|
|
|
|
|
I've "heard" the DataReceived event doesn't always work (so I avoid it).
You first need to confirm that your SerialPort (class) settings match what's in Control Panel AND match what the device expects.
Also insure your "timeout" settings are high enough.
When you believe there is data on the serial port, you can do a .BytesToRead() call on the serial port to see if there is data waiting. You should "sleep" some amount of time before trying.
If you never have any "bytes to read" > 0, then you're still not configured / hooked-up properly.
(You should build a dialog (button) so that you can read / query the port on demand for testing. You cannot restart a program and serial port and expect data to persist).
|
|
|
|
|
@ Gerry Schmitz . Thank you for your good information.
yes both the SerialPort (class) and the Caller ID have the same settings.
maybe your ideas will work but I have to modify my code first. Can you please tell me how to do the following in my code:
-
.BytesToRead() call
- how to sleep before trying?
- how to insure my "timeout" settings are high enough. I don't have TimeOut in my code.
Please help me so I can modify my code. Thank you
|
|
|
|
|
int bytesToRead = 0;
for ( int i = 0; i < 5; i++ ) {
bytesToRead = _serialPort.BytesToRead;
if ( bytesToRead > 0 ) {
break;
}
Thread.Sleep( 50 );
}
Setting timeouts is trial-and-error; you just need to insure they are "long enough".
I've been in situations where the timeouts needed varying from 250ms up to 5000ms; depending on the environment (i.e. network).
Another thing: Serial devices don't typically just "send"; they respond to requests. i.e. You send data to the device; it responds ... even if it is just with an error.
If there is no "command" that you can send to the device and for which you can expect a response (like "current status"), then you are missing something (like RTFM).
|
|
|
|