|
A pattern is a description of a way to solve a common design problem. The behaviour and terminology is formalised, so that people use the same terms when describing these solutions. There are many great resources available for learning about patterns. The classic example is the Gang of Four (GoF) book[^]. It's a bit hard to follow when you're first learning it, so I'd recommend something like the Head First Design Patterns book. Beyond that, take a look at dofactory.com[^]. They have lots of examples of patterns.
|
|
|
|
|
It's just a feeling but he is talking about a pattern for a reg-X to use in a match
|
|
|
|
|
I am using mailmessage c# class and send email to users with specific text set in body. when i use url like www.adobe.com in email body, it creates hyperlink when I received email. I do not want to create hyperlink on www.adobe.com.
modified 5-May-15 6:40am.
|
|
|
|
|
This is not a good question - we cannot work out from that little what you are trying to do.
Remember that we can't see your screen, access your HDD, or read your mind.
Perhaps if you show us the code you used and explain where the link is, it might help?
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
Look at the source of your received email. I guess there's still just www.adobe.com and your email client just displays it as a hyperlink.
If the brain were so simple we could understand it, we would be so simple we couldn't. — Lyall Watson
|
|
|
|
|
My email source as below:
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
.Arial { font-family: Arial, Helvetica, sans-serif; } .myFont { font-size: 12px; }
</head>
<body>
Dear Customer,
To download Adobe Acrobat Reader you can visit on www.adobe.com.
</body>
</html>
|
|
|
|
|
Isn't that the answer for you then?
If the brain were so simple we could understand it, we would be so simple we couldn't. — Lyall Watson
|
|
|
|
|
Yes, it converts it into hyperlink.
|
|
|
|
|
Your email client displays it as hyperlink. Other people using other mail clients might see it just as it looks in your mail source. There's nothing you can do about that.
If the brain were so simple we could understand it, we would be so simple we couldn't. — Lyall Watson
|
|
|
|
|
Put the url in single quotes; e.g.
To download Adobe Acrobat Reader you can visit on 'www.adobe.com'.
|
|
|
|
|
I am new in this.
I wanted to make windows application which have multi page option(Some Menu in the main page and after clicking them it will open that menu detail just like setting page)
i have search for the there are so much option like Magellan, ISwitchable etc
So what is the fastest way to beginner to make multi page application?
modified 5-May-15 7:36am.
|
|
|
|
|
Sorry, you will have to give us rather more detail than that!
This is not a good question - we cannot work out from that little what you are trying to do.
Remember that we can't see your screen, access your HDD, or read your mind.
So try describing exactly how you want it to work - do you want separate forms? Or on the same form? What does your menu look like? Are you using WinForms? Or WPF? And so forth...
And then explain what you have tried, and where you are stuck - we need to know so we don't try to give you a solution you have tried, or a solution you can't understand yet because you haven't covered it on your course!
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
I am trying to make application which communicate to my device with RS232 and I make a main page and the setting page now i just wanted that in my main page when i click the Setting button a pop-up will open which is my setting page.
I am using WinForms
|
|
|
|
|
OK - so create a new form, and call it frmSettings.
Populate it with your controls, and add "OK" and "Cancel" buttons.
For the OK Button, set the DialogResult property to "OK"
For the Cancel Button, set the DialogResult to "Cancel"
Highlight the form, and set the AcceptButton property to the OK button.
Then set the CancelButton property to the Cancel button.
Add Properties to let you transfer data into and out of your form.
Go back to your main form, and add this code to your Setting button Click event handler:
frmSettings fs = new frmSettings();
if (fs.ShowDialog() == DialogResult.OK)
{
}
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
Thank you so very much for your help!!!!!!
|
|
|
|
|
You're welcome!
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
OriginalGriff already gave you a good answer. I just want to mention for your better understanding that you misunderstood the meaning of "Multi Page Application". You can safely forget about that and about "ISwitchable" and "Magellan"
If the brain were so simple we could understand it, we would be so simple we couldn't. — Lyall Watson
|
|
|
|
|
Hi,
I'm going to use HTML5 in C# windows form application.
But WebBrowser tool in my toolbox does not support HTML5.
So, I want to use chrome browser in my C# application.
Please help.
|
|
|
|
|
There's a library available called "Chromium"; you'll need the SDK and the C# bindings.
Google knows where to find them.
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
Thank you for you answer.
I download cef_binary_3.2171.1979_windows32, but it doesn't supply WebRTC.
|
|
|
|
|
Ok so I saw the cast on "altChunk" (https://www.youtube.com/watch?v=couuEc6eEjE) and the blog (http://blogs.msdn.com/b/ericwhite/archive/2008/10/27/how-to-use-altchunk-for-document-assembly.aspx), especially the HTML section. I am very new to XML and it's tools and I have been struggling to put all the pieces together. 85% of code is from research and altered.
OBJECTIVE: I have a PowerPoint slide template that has a couple of text fields that I fill (id [uic], name, PreviousDate, CurrentDate, ...) then it has two embedded word objects representing Previous Notes and Current Notes respectively. These two embedded Word objects are what I am trying to put HTML in. The HTML comes from user input via the web and stores it in a DB field. So I am looping through my data rows-->creating a copy of the slide template-->filling the placeholders (id [uic], name, PreviousDate, CurrentDate) with the data from a row-->then I am trying to fill each embedded Word object with it's HTML data-->save the slide and start the process over for each row of data.
Here is what I have so far. I have gone down many rabbit trails but I have tried to clean the code up to show just current code. My current issue is that when the slide saves it disposes my object/connection/stream(?) so I can not fill the second object. Do I need to not save until I fill both Word objects? I see the "altChunkID" but I can not tell if it actually references anything. Do I need to declare an XNamespace for the altChunk relationship?
I think I am close, but I just missing a few pieces that tie it all together. Any assistance would be educational and greatly appreciated. Below is my code; starting with a call to renderPPT(). ...Thank you in advance. :
using System;
using System.Globalization;
using System.Data;
using System.Data.Odbc;
using System.Drawing;
using System.IO;
using System.Collections.Generic;
using System.Linq;
using System.Configuration;
using System.Security.Principal;
using System.Text;
using System.Data.SqlClient;
using DocumentFormat.OpenXml;
using DocumentFormat.OpenXml.Wordprocessing;
using DocumentFormat.OpenXml.Presentation;
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Drawing;
using System.Xml;
using System.Xml.Linq;
namespace NotesFor.HtmlToOpenXml
{
public partial class Data2PPT : System.Web.UI.Page
{
static int index = 1;
XDocument mainDocX = new XDocument();
public partial class Data2Powerpoint
{
public string strUIC;
public string strANAME;
public string strPrevUpdate;
public HtmlAgilityPack.HtmlDocument htmlPrevNotes;
public HtmlAgilityPack.HtmlDocument htmlCurrNotes;
public string strCurrUpdate;
public Data2Powerpoint()
{ }
}
public void renderPPT()
{
if (File.Exists(Server.MapPath("PowerPointTemplate/FAMBriefingNotes.pptx")))
{ File.Delete(Server.MapPath("PowerPointTemplate/FAMBriefingNotes.pptx")); }
File.Copy(Server.MapPath("PowerPointTemplate/EmbedWordPPT.pptx"), Server.MapPath("PowerPointTemplate/FAMBriefingNotes.pptx"), true);
using (PresentationDocument myPres = PresentationDocument.Open(Server.MapPath("PowerPointTemplate/FAMBriefingNotes.pptx"), true))
{
PresentationPart presPart = myPres.PresentationPart;
if (presPart != null && presPart.Presentation != null)
{
Presentation pres = presPart.Presentation;
if (pres.SlideIdList != null)
{
var slideIDs = pres.SlideIdList.ChildElements;
string slidePartRelationshipID = (slideIDs[0] as SlideId).RelationshipId;
SlidePart sldPart = (SlidePart)presPart.GetPartById(slidePartRelationshipID);
if (Session["dtbl2ppt"] != null)
{
DataTable dt = (DataTable)Session["dtbl2ppt"];
if (dt.Rows.Count > 0)
{
for (int i = 0; i < dt.Rows.Count; i++)
{
SlidePart newSldPart = CloneSlidePart(presPart, sldPart);
string HTMLheader = @"<html> <p align='left'>
<head>
<style id='oboutEditorDefaultStyle'>
.blueItalic { color: #0000ff; font-style:italic;}
body {
color:#404040;background-color: #fff;
border-width: 0px;margin-top: 0px; margin-bottom: 0px;
margin-left: 0px; margin-right: 0px;
padding-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px;
}
body,table td
{
font-family: verdana,sans-serif;font-size: 10pt;
}
h1 {
font-size: 24pt;
}
h2 {
font-size: 18pt;
}
h3 {
font-size: 14pt;
}
h4 {
font-size: 12pt;
}
h5 {
font-size: 10pt;
}
h6 {
font-size: 8pt;
}
</style>
</head>
<body>";
string HTMLfooter = @"</p></body></html>";
HtmlAgilityPack.HtmlDocument htmlPrevNotesDoc = new HtmlAgilityPack.HtmlDocument();
htmlPrevNotesDoc.OptionOutputAsXml = true;
htmlPrevNotesDoc.LoadHtml(HTMLheader + dt.Rows[i]["PrevUnitNotes"].ToString() + HTMLfooter);
HtmlAgilityPack.HtmlDocument htmlCurrNotesDoc = new HtmlAgilityPack.HtmlDocument();
htmlCurrNotesDoc.OptionOutputAsXml = true;
htmlCurrNotesDoc.LoadHtml(HTMLheader + dt.Rows[i]["CurrUnitNotes"].ToString() + HTMLfooter);
String strPrevDT = ""; String strCurrDT = "";
if (dt.Rows[i]["PrevUpdate"] != null && dt.Rows[i]["PrevUpdate"].ToString().Length > 0)
{ strPrevDT=DateTime.Parse(dt.Rows[i]["PrevUpdate"].ToString()).ToString("yyyy-MMM-dd HH:MM"); }
if (dt.Rows[i]["CurrUpdate"] != null && dt.Rows[i]["CurrUpdate"].ToString().Length > 0)
{ strCurrDT = DateTime.Parse(dt.Rows[i]["CurrUpdate"].ToString()).ToString("yyyy-MMM-dd HH:MM"); }
SwapPlaceholderText(myPres, newSldPart, "UIC", dt.Rows[i]["UIC"].ToString(), false, i);
SwapPlaceholderText(myPres, newSldPart, "ANAME", dt.Rows[i]["ANAME"].ToString(), false, i);
SwapPlaceholderText(myPres, newSldPart, "PrevUpdate", strPrevDT, false, i);
SwapPlaceholderText(myPres, newSldPart, "CurrUpdate", strCurrDT, false, i);
SwapPlaceholderText(myPres, newSldPart, "PrevUnitNotes", htmlPrevNotesDoc.DocumentNode.InnerHtml, true, i);
SwapPlaceholderText(myPres, newSldPart, "CurrUnitNotes", htmlCurrNotesDoc.DocumentNode.InnerHtml, true, i + 1);
List<DocumentFormat.OpenXml.Drawing.Text> begTagList = newSldPart.Slide.Descendants<DocumentFormat.OpenXml.Drawing.Text>()
.Where(t => t.Text.Contains("<#")).ToList();
foreach (DocumentFormat.OpenXml.Drawing.Text text in begTagList)
text.Text = "";
List<DocumentFormat.OpenXml.Drawing.Text> endTagList = newSldPart.Slide.Descendants<DocumentFormat.OpenXml.Drawing.Text>()
.Where(t => t.Text.Contains("#>")).ToList();
foreach (DocumentFormat.OpenXml.Drawing.Text text in endTagList)
text.Text = "";
}
DeleteTemplateSlide(presPart, sldPart, slidePartRelationshipID);
}
}
}
else
{
Response.Write("No rows found.");
}
}
}
}
static void SwapPlaceholderText(PresentationDocument pDoc, SlidePart slidePart, string placeholder, string value, bool outputXML, int cnt)
{
if (!outputXML)
{
List<DocumentFormat.OpenXml.Drawing.Text> textList = slidePart.Slide.Descendants<DocumentFormat.OpenXml.Drawing.Text>()
.Where(t => t.Text.Contains(placeholder)).ToList();
foreach (DocumentFormat.OpenXml.Drawing.Text text in textList)
text.Text = value;
}
else if (placeholder == "PrevUnitNotes" || placeholder == "CurrUnitNotes")
{
using (pDoc)
{
Slide sld = slidePart.Slide;
var oleObject = sld.Descendants<OleObject>().FirstOrDefault();
if (oleObject != null)
{
var pp = pDoc.PresentationPart;
var sld1 = pp.Presentation.SlideIdList.ChildElements.OfType<SlideId>().FirstOrDefault();
var rid = sld1.RelationshipId.Value;
var sldPt = (SlidePart)pp.GetPartById(rid);
var oleRid = oleObject.Id.Value;
var embeddedPackagePart = (EmbeddedPackagePart)sldPt.GetPartById(oleRid);
XNamespace w = "http://schemas.openxmlformats.org/wordprocessingml/2006/main";
XNamespace r = "http://schemas.openxmlformats.org/officeDocument/2006/relationships";
using(var stream = embeddedPackagePart.GetStream())
using (WordprocessingDocument wDoc = WordprocessingDocument.Open(stream, true))
{
var wpDocPart = wDoc.MainDocumentPart;
HtmlConverter converter = new HtmlConverter(wpDocPart);
Body bdy = wpDocPart.Document.Body;
string altChunkId = "AltChunkId" + cnt;
AlternativeFormatImportPart chunk = wpDocPart.AddAlternativeFormatImportPart("application/xhtml+xml", altChunkId);
using (Stream chunkStream = chunk.GetStream(FileMode.OpenOrCreate, FileAccess.ReadWrite))
using (StreamWriter stringStream = new StreamWriter(chunkStream))
stringStream.Write(value);
XElement altChunk = new XElement(w + "altChunk", new XAttribute(r + "id", altChunkId));
XDocument mainDocX = GetXDocument(wDoc);
mainDocX.Root
.Element(w + "body")
.Elements(w + "p")
.Last()
.AddAfterSelf(altChunk);
SaveXDocument(wDoc, mainDocX);
}
}
}
}
}
private static void SaveXDocument(WordprocessingDocument myDoc, XDocument mainDocumentXDoc)
{
using (Stream str = myDoc.MainDocumentPart.GetStream(FileMode.Create, FileAccess.Write))
using (XmlWriter xw = XmlWriter.Create(str))
mainDocumentXDoc.Save(xw);
}
private static XDocument GetXDocument(WordprocessingDocument myDoc)
{
XDocument mainDocumentXDoc;
using (Stream str = myDoc.MainDocumentPart.GetStream())
using (XmlReader xr = XmlReader.Create(str))
mainDocumentXDoc = XDocument.Load(xr);
return mainDocumentXDoc;
}
static SlidePart CloneSlidePart(PresentationPart presentationPart, SlidePart slideTemplate)
{
SlidePart newSlidePart = presentationPart.AddNewPart<SlidePart>("newSlide" + index);
index++;
newSlidePart.FeedData(slideTemplate.GetStream(FileMode.Open));
newSlidePart.AddPart(slideTemplate.SlideLayoutPart);
SlideIdList slideIdList = presentationPart.Presentation.SlideIdList;
uint maxSlideId = 1;
SlideId prevSlideId = null;
foreach (SlideId slideId in slideIdList.ChildElements)
{
if (slideId.Id > maxSlideId)
{
maxSlideId = slideId.Id;
prevSlideId = slideId;
}
}
maxSlideId++;
SlideId newSlideId = slideIdList.InsertAfter(new SlideId(), prevSlideId);
newSlideId.Id = maxSlideId;
newSlideId.RelationshipId = presentationPart.GetIdOfPart(newSlidePart);
return newSlidePart;
}
static void DeleteTemplateSlide(PresentationPart presentationPart, SlidePart slideTemplate, string relId)
{
SlideIdList slideIdList = presentationPart.Presentation.SlideIdList;
foreach (SlideId slideId in slideIdList.ChildElements)
{
if (slideId.RelationshipId.Value.Equals(relId))
slideIdList.RemoveChild(slideId);
}
presentationPart.DeletePart(slideTemplate);
}
static void CalculateImageEmus(Bitmap bitmap, out int widthInEmu, out int heightInEmu)
{
float verticalResolution = bitmap.VerticalResolution;
float horizontalResolution = bitmap.HorizontalResolution;
int width = bitmap.Size.Width;
int height = bitmap.Size.Height;
float widthInInches = (float)width / horizontalResolution;
float heightInInches = (float)height / verticalResolution;
widthInEmu = (int)(widthInInches * 914400);
heightInEmu = (int)(heightInInches * 914400);
}
}
}
|
|
|
|
|
Hi, I'm fairly new to C# and recently I started developing a speech recognition program. At the moment I have a grammar builder which reads from a text file. This means it will only recognise a command if it's in that text file. I would really like to implement Google speech in to my program so I can search google, youtube etc without adding it to a text file. I know you can do it because I've seen people do it and it works by sending a audio file and then Google sends back the closest to confidence text.
If possible I'd really like for someone to help me to implement this. My current code(the rest is just commands) http://pastebin.com/yukznbeD[^]
|
|
|
|
|
|
Yes this is something that I'm looking for but I'm not sure how I would implement this into my C# project.
|
|
|
|
|
You start by studying the documentation.
|
|
|
|
|