Diskuze: Clipboard - načtení mezi jinými aplikacemi
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 5 zpráv z 5.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Ještě jsem to trochu změnil.. (bych to zpřehlednil) Podstatné je, že
pokud se použije místo as přetypování, tak to vypisuje
hlášku:
Objekt typu System.IO.MemoryStream nelze přetypovat na typ
CLPRD.MyClass
[Serializable]
internal class MyClass
{
public static string FORMAT_ID = "MyClassData";
private String[] lines;
public MyClass(string a, string b, string c)
{
lines = new String[3] {a, b, c};
}
public string this[int index]
{
get { return lines[index]; }
}
public static MyClass FromClipboard()
{
IDataObject obj = Clipboard.GetDataObject();
if (obj.GetDataPresent(MyClass.FORMAT_ID))
{
MyClass mc = (MyClass)obj.GetData(MyClass.FORMAT_ID, false);
if (mc == null) throw new Exception("Data ve schránce se nepodařilo načíst!");
return mc;
}
else throw new Exception("Schránka neobsahuje podporovaná data!");
}
public void SendToClipboard()
{
IDataObject dataObj = new DataObject(MyClass.FORMAT_ID, this);
Clipboard.SetDataObject(dataObj);
}
}
Ahoj. A s klasickým textem Ti to funguje? Což takhle ten objekt serializovat do XML a předat jako string?
S textem není problém. Ale u textu se mě nelíbí, že uživatel může vložit jiný, nebo pozměněný text.
ps, Zkoušel jsem text i serializovat binárně, ale vkládání do jiné aplikace se taky nepodařilo, hlásilo to chybu, že aplikace nemůže najít.. - byl tam název namespace a verze aplikace
Takže prozatím jsem to vyřešil tak, že jsem třídu MyClass dal tak jak
je, do DLL a importuji do obou aplikací.
Schránka funguje sice pouze dokud je zdrojová aplikace spuštěna, ale to mi
moc nevadí.
Ale prozatím nebudu označovat toto vlákno jako vyřešené, snad
někdo najde lepší řešení.
Díky každému, kdo nad mým problémem přemýšlel.
Zobrazeno 5 zpráv z 5.